Charset fehler ?

hinweis überlesen ^^ hab das mal geändert in
PHP:
$this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
so wurde mir wenigstens was angezeigt . hab alles soweit hinbekommen und der User wird wieder erstellt in der DB.

Jetzt ist nur das Problem das nach dem login nur eine weiße Seite ist mit der Info

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AND folder_in<>0 AND unread='yes'' at line 1 in

theo. müsste der fehler hier liegen
PHP:
if($msgalert && $CURUSER){
        $unread = $GLOBALS['database']->row_count("messages","receiver=" . $CURUSER["id"] . " AND folder_in<>0 AND unread='yes'");
        if($unread < 1)
            unset($unread);
 
Werbung:
$this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Die Zeile ganz zu entfernen hätte auch gereicht - Exception ist der Standardwert.
$unread = $GLOBALS['database']->row_count("messages","receiver=" . $CURUSER["id"] . " AND folder_in<>0 AND unread='yes'");
Was steht in $CURUSER["id"]? Ich würde mal darauf tippen dass der Werte leer ist bzw. garnicht existiert (letzteres würde ein voll aufgedrehtes error_reporting() melden) und der Query damit fehlerhaft wird (zur Kontrolle mal ausgeben lassen!).
 
$CURUSER["id"] nimmt die Benutzer ID . Die ist auch in der DB gesetzt.
quasi Benutzer Test hat ID 1 , Test2 hat ID 2 ....

das error reporting hab ich jetzt mal auf voll eingestellt, dann wird noch angeigt
Notice: Undefined index: cnt in /var/www/seite/inc/basic.php on line 229

das müsste dieses stück sein
PHP:
  if (isset($_SESSION["userdata"])) {
        $qry = $GLOBALS['DB']->prepare('SELECT COUNT(*) AS `cnt` FROM `users` WHERE `id` = :id AND `enabled`= "yes" AND `status` = "confirmed" ');
        $qry->bindParam(':id', $GLOBALS["CURUSER"]["id"], PDO::PARAM_INT);
        $qry->execute();
        if($qry->rowCount() > 0){
            $enabled = $qry->FetchAll();
            if ($enabled["cnt"] != 1 || $_SESSION["userdata"]["ip"] != $ip) {
                session_unset();
                session_destroy();
                return;
            }
        }
        
        $GLOBALS["CURUSER"] = $_SESSION["userdata"];
    } else {
        // Kei

Zeile 229 währe
PHP:
if ($enabled["cnt"] != 1 || $_SESSION["userdata"]["ip"] != $ip) {
 
$CURUSER["id"] nimmt die Benutzer ID . Die ist auch in der DB gesetzt.
Was in der Datenbank steht ist irrelevant - wichtig ist was tatsächlich in der Variablen steht. Prüfe nach was da wirklich steht!
$enabled = $qry->FetchAll();
if ($enabled["cnt"] != 1 || $_SESSION["userdata"]["ip"] != $ip) {
Du solltest dir dringend mal das Debuggen angewöhnen: in $enabled steht nicht das was du erwartest da fetchAll() ein mehrdimensionales Array liefert - du suchst fetch() bzw. fetchColumn().

Mit der Datenbank scheint mir das aber alles weniger zu tun zu haben, ich würde eher mal darauf tippen dass das Nebenwirkungen eines Updates der PHP-Version sind.
 
Werbung:
Zurück
Oben