Ankündigung

Einklappen
Keine Ankündigung bisher.

Loginscript scheitert bei _fetch_object

Einklappen

Neue Werbung 2019

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

  • Loginscript scheitert bei _fetch_object

    Nabend,

    im Moment sitze ich an einem einfachen Loginscript und habe ein Problem, welches ich trotz Bücher und dem Internet bislang nicht lösen konnte.
    Zurzeit wurschtel ich an folgendem Script umher.

    <?php
    $user=$_POST['user'];
    $passwd=$_POST['passwd'];
    $db=mysql_connect("localhost","root","");
    mysql_select_db("unseen");
    $anfrage="SELECT * FROM member";
    $row=mysql_fetch_object($anfrage);
    if($row==$passwd)
    {
    header("locaton: index.php");
    mysql_close($db);
    }
    else
    {
    echo "Login fehlgeschlagen";
    }
    ?>
    Aus dem Internet und meinen Büchern habe ich nun schon alle möglichen Varianten versucht. Aber ich komme einfach nicht zum Ziel.
    Könnt ihr mir verraten wo mein Fehler liegt oder mir vielleicht sogar eine bessere Möglichkeit fürs Loginscript aufzeigen ?

    Liebe Grüße
    DMM23

  • #2
    Bitte nutz das nächste mal die richtigen (PHP-)BBCodes, nicht die für Zitat, und auch die Fehlerbeschreibung fehlt.

    Dass du trotz Bücher und Internet nicht weiter kommst, kann ich kaum glauben. Du nimmst in deinem Script einfach die Rückgabe von mysql_fetch_object und vergleichst sie mit dem eingegebenen Passwort. Allerdings stellst du weder sicher, dass du auch das Passwort vom richtigen User aus der Datenbank bekommst, noch sagst du der Datenbank, dass du das Passwort haben möchtest, nicht alles. Außerdem solltest du nochmal nachschlagen, was mysql_fetch_object zurück gibt.

    PS: Passwörter direkt in der Datenbank zu speichern ist extrem Unsicher. Das Passwort sollte vorher gehasht werden.
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      Und auch hier gleich noch drauf der Hinweis.. mysql_ Erweiterung ist veraltet und wird es bald nicht mehr geben. Nutze mysqli_ oder PDO, am besten gleich mit prepared Statements, dann ist SQL-Injection auch hinfällig.

      http://php.net/manual/en/migration55.deprecated.php

      http://php-de.github.io/jumpto/sql-injection/

      Und:

      PHP-Code:
      $user=$_POST['user'];
      $passwd=$_POST['passwd']; 
      Und du solltest zuerst prüfen ob die Werte im POST überhaupt vorhanden sind bevor du die abfragst, was darin enthalten ist. In dem Fall bekommst du nämlich beim normalen Aufruf (also ohne Form-Submit) der Seite eine PHP-Notice, weil du auf nicht existierende POST-Array-Keys zugreifst. Falls nicht, dann solltest du zum Entwickeln auch noch error reporting aufdrehen d.h. das hier am Beginn des Scriptes schreiben:

      PHP-Code:
      error_reporting(-1);
      ini_set('display_errors'1); 
      LG
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Nicht nur dass du mysql_fetch_object falsch verwendest, versuchst du Daten aus einem String zu ziehen. Du musst davor den SQL mit mysql_query ausführen lassen. Das liefert dir dann eine Ressource zurück, womit du dann mit mysql_fetch_object die Daten auslesen kannst

        Kommentar

        Lädt...
        X