Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Notice: Trying to get property of non-object

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • santaVSclaus
    hat ein Thema erstellt [Erledigt] Notice: Trying to get property of non-object.

    [Erledigt] Notice: Trying to get property of non-object

    Guten Tag,

    ich habe jetzt lange überlegt ob ich mich hier registriere um die Frage zu stellen. Da ich nun aber nicht mehr weiter weiß habe ich mich doch getraut

    Wie im Titel schon angegeben bekomme ich eine Fehlermeldung, die ja besagt das hier ein Objekt angegeben wird was nicht da ist.

    Der Script ist ein Login Script - hier wird noch ein Capatcha usw eingebaut.

    Erst mal den Code

    PHP-Code:
    <?php
    session_start
    ();


    require_once (
    'include/config.inc.php');

    $username $_POST["username"];
    $passwort md5($_POST["password"]);

    $abfrage "SELECT * FROM user WHERE username='$username' AND passwort='$passwort'";
    $ergebnis mysql_query($abfrage);
    $datensatz mysql_fetch_object($ergebnis);


        if ( 
    $datensatz->username == $username AND $datensatz->passwort == $passwort)
        {
      
    $_SESSION["username"]                  =   $username;
    }



        
    // sleep(1);
        // header('Location: index.php');

        //}
    //else
      //  {
       // sleep(1);
        // header('Location: index.php');
        //}



    ?>
    Die betroffene Zeile ist

    PHP-Code:
    $abfrage "SELECT * FROM user WHERE username='$username' AND passwort='$passwort'"
    Wenn ich

    PHP-Code:
    AND passwort='$passwort' 
    raus nehme erhalte ich keine Fehlermeldung, jedoch ist das ja nicht der Sinn - username und passwort sind beide in der DB unter user vorhanden.

    Evtl. kann mir der ein oder andere ja Tipps geben.

  • Unlikus
    antwortet
    Es gibt für php auch nette Debugtools, xdebug ist ganz nett, kann einem viel Arbeit und die unschönen echos überall ersparen.
    Bei machen Frameworks werden die ohne ein exit; dahinter nicht mal angezeigt

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Okay, passt schon - wie ihr ja sagt, man lernt aus seinen Fehlern

    Einen Kommentar schreiben:


  • uha
    antwortet
    Zitat von Unlikus Beitrag anzeigen
    Das Forum soll dir helfen, in Zukunft deine Probleme selbst zu lösen
    So ist es, immer nach dem Motto eines chinesischen Sprichwortes:
    Gib einem Hungernden einen Fisch, und er wird einmal satt, lehre ihn Fischen, und er wird nie wieder hungern.

    Einen Kommentar schreiben:


  • Unlikus
    antwortet
    Das Forum soll dir helfen, in Zukunft deine Probleme selbst zu lösen und nicht dein Problem zu lösen, wenn du dich nicht ernsthaft mit php beschäftigen willst, bist du hier falsch.

    Einen Kommentar schreiben:


  • uha
    antwortet
    Zum Programmieren gehört auch die eigenständige Fehlersuche. Wenn man dann trotzdem nicht weiterkommt, kann man in einem Forum nachfragen. Aber bitte erst "Richtig debuggen" ausführen und den Quellcode mit den Debug-Ausgaben posten, damit man auch erkennt, dass du gewillt warst, den Fehler selber zu finden. Zum Vorkauen sind Foren nicht gedacht.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    .....

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Aber bei Wikipedia steht doch

    ...ist ein virtueller Platz zum Austausch und zur Archivierung von Gedanken, Meinungen und Erfahrungen...
    Wenn ich jetzt alle 7 Punkte ab arbeite - was natürlich und mit Sicherheit produktiv ist - für was gibt es dann hier das Forum bzw. den Bereich

    PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
    ???

    Und genau deshalb hatte ich ja geschrieben

    ich habe jetzt lange überlegt ob ich mich hier registriere um die Frage zu stellen. Da ich nun aber nicht mehr weiter weiß habe ich mich doch getraut

    Einen Kommentar schreiben:


  • uha
    antwortet
    Zuerst einmal stelle um auf MySQLI oder PDO, die MySQL-Schnittstelle ist veraltet.

    Richtig debuggen

    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ich habe nun alles durch die Datenbank gejaggt. Mit

    Code:
    SELECT * FROM user WHERE `username` = 'Mustermann' AND `passwort` = 'd83799f49c48d0de9c67bc25b'
    Klappt es - auch wenn ich es in den PHP Code einfüge. Nun habe ich es nach und nach probiert. Zu erst habe ich die Variable $username für Mustermann ersetzt , passt soweit. Sobald ich aber den MD5 Code mit der Variable $passwort ersetze kommt der selbe Fehler erneut.

    PHP-Code:
    var_dump($abfrage); 
    sagt mir

    Code:
    string(99) "SELECT * FROM user WHERE `username` = 'Mustermann' AND `passwort` = 'd83799f49c48d0de9c67bc25bcf6b21f'"
    Das Formular Script sieht so aus

    PHP-Code:
    <?php
    echo '<form action="login.php" method="post">';
    echo 
    'Dein Username:<br>';
    echo 
    '<input type="text" size="24" maxlength="50"';
    echo 
    'name="username"><br><br>';
    echo 
    'Dein Passwort:<br>';
    echo 
    '<input type="password" size="24" maxlength="50"';
    echo 
    'name="password"><br>';
    echo 
    '<input type="submit" value="Login">';
    echo 
    '</form>';
     
    ?>

    Einen Kommentar schreiben:


  • jspit
    antwortet
    Lass dir $abfrage ausgeben (z.B. mit var_dump), kopiere den String und teste das SQL mit phpMyAdmin oder was immer du nimmst.
    Vermute einen Schreibfehler beim Feldnamen.

    Einen Kommentar schreiben:

Lädt...
X