kostenloser Webspace werbefrei: lima-city


Problem mit mysql_fetch_object

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    geocaching-dermoench

    geocaching-dermoench hat kostenlosen Webspace.

    Und nochmal hallo,

    Mein neues Problem:
    Ich würde gerne einen Loginscript erstellen, mithilfe einer MySQL-Datenbank.

    Die eigentliche Abfrage habe ich mir so vorgestellt:
    $username = trim($_POST['username']);
           $pwd = trim($_POST['password']);
           
           if(empty($username) OR empty($pwd))
           {
              echo "<br />\n<span class=\"error\">Das Formular wurde nicht korrekt ausgef&uuml;llt!</span>\n<br />\n";
           }
           else
           {
              $pwd = md5($pwd);
              
              $sql = "SELECT name, pwd FROM user_dat WHERE name LIKE '$username' LIMIT 1";
              $db_erg = mysql_query($sql);
              if(!$db_erg)
              {
                 echo "Abfrage unm&ouml;glich!";
              }
              
              
              $row = mysql_fetch_object($db_erg);
              if($row->name === $username AND $row->pwd === $pwd)
              {
                   echo "Geht";
              }
              else
              {
                 echo "Geht nicht!";
              }
           }


    Leider endet das ganze so, dass mir als Fehlermeldung
    Notice: Trying to get property of non-object in C:\xampp\htdocs\Webseite\User\index.php on line 130

    ausgegeben wird...

    Hat hier jemand eine Ahnung, woran das liegen könnte, bwz, was ich falsch mache???

    mfG Mönch
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Was steht denn auf Zeile 130 in der index.php?
  4. Autor dieses Themas

    geocaching-dermoench

    geocaching-dermoench hat kostenlosen Webspace.

    In Zeile 130 steht
    $row = mysql_fetch_object($db_erg);
  5. Ich kenn mich mit der Funktion mysql_fetch_object nicht so aus.
    Ich habe bei meinem Loginscript damals mysql_fetch_assoc verwendet.
    Vielleicht solltest du mal das probieren:
    $row = mysql_fetch_assoc(($db_erg);
    $rowname = $row['name'];
    $rowpwd = $row['pwd'];
    if($rowname && $rowpwn)
              {
                   echo "Geht";
              }
              else
              {
                 echo "Geht nicht!";
              }


    Oder...
    Wie ich gesehen habe hast du bei if als operator
    AND
    benutzt, es muss
    &&
    heißen.
    Versuch das hier als erst.

    LG yashha
  6. Autor dieses Themas

    geocaching-dermoench

    geocaching-dermoench hat kostenlosen Webspace.

    Hallo,

    Mit
    $daten = mysql_fetch_assoc($db_erg);
    echo $daten['name'];
    echo $daten['pwd'];
    echo $daten['sck'];


    wird leider auch nichts ausgegeben...
    Wenigstens keine Fehlermeldung. :-)
    Aber normalerweise müssten mir doch auf diese Weise die Inhalte der gewählten Reihe ausgegebene werden.
    $db_erg ist getestet und funktioniert aber.

    Und
    AND
    entspricht in PHP
    &&
    .
    In Javascript gild das AND nicht.

    In PHP kann man allerdings für && AND und für || OR einsetzen... (-:

    mfG Mönch
  7. Ich denke mal es hat dann etwas mit der sql zu tun.
    SELECT name, pwd FROM user_dat WHERE name LIKE '$username' LIMIT 1


    Warum benutzt du den Operator LIKE und nicht "=".
  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    LIKE ermöglicht es bei falschem Benutzernamen trotzdem eingeloggt zu werden. Spar dir das LIKE und ersetz es durch =

    Zum Code:
    Versuch mal Folgendes:
    $row = mysql_fetch_object($db_erg);
    if(!$row) {
        echo('Keine Zeilen!');
    }
    Das ist eine einfache Fehlerüberprüfung, da $row == false bedeutet das keine Datenzeile vorhanden ist.
    Ansonsten sehe ich bei deinem Code keine Behandlung für den Fall dass gar keine Zeile deinem Suchkriterium entspricht.
  9. Autor dieses Themas

    geocaching-dermoench

    geocaching-dermoench hat kostenlosen Webspace.

    Hallo,

    Danke, der Tipp mit "=" hat gewirkt...
    Ich weiß zwar nicht, warum der SQL - Code mit "LIKE" nicht azeptiert wird, aber auf jeden Fall geht jetzt die Sache!

    Mein nächstes Problem:
    Ich würde, wenn der Loginerfolgreich war, den Benutzer gerne auf eine andere Seite umleiten.
    Ich habe vor, das ganze in der Version
    header('Location ...');
    zu realisieren.
    Wenn ich die Sache im Localhost ausprobiere klappt es einwandfrei, allerdings nichtmehr, wenn ich den Code auf dem Server eingefügt habe.

    Der Benutzer wird erkannt, aber nicht weitergeleitet...!
    Mein Code hierzu sieht so aus:
    $pwd = md5($pwd);          
    
              $sql = "SELECT name, pwd FROM user_dat WHERE name = '$username' LIMIT 1";
              $db_erg = mysql_query($sql);
              
              $row = mysql_fetch_object($db_erg);
              if(!$row)
              {
              echo "<br />\n<span class=\"error\">Dieser Benutzername existiert nicht!</span>\n<br />\n";
              }
              else
              {
    	        if($row->name == $username AND $row->pwd == $pwd)
                 {
                    header('Location: http://www.geocaching-dermoench.lima-city.de/...);
                 }
                 else
                 {  
                    echo "<br />\n<span class=\"error\">Deine Formulareingaben waren falsch!</span>\n<br />\n";
                 }
              }


    Hat hier jemand eine Idee, woran das liegen könnte???


    mfG Mönch
  10. Kommt bei dir eine Fehlermeldung?

    Wenn ja:
    Ich habe auch lange Zeit versucht, die headerfuktion zum Funktionieren zu bringen.
    Ich habe es nicht geschafft.

    Versuch es mal mit Javascript. Damit hat es bei mir funktioniert.
    Moment ich such dir was raus.
    Edit:
    http://www.websmith.de/blog/webprogrammierung/redirect-suchmaschinen/redirect-mit-javascript-21/

    Wenn nein probier das:
    setzte ein ' am ende deines links in der header funktion

    mfg yashha

    Beitrag zuletzt geändert: 19.1.2012 20:19:47 von yashha
  11. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Wenn du PHP-Warnungen aktiviert hast und irgend etwas in der Art "header already sent" bekommst hast du schon vor dem header()-Aufruf Zeichen ausgegeben. Somit wurde der Header schon übertragen und kann nicht mehr verändert werden.
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!