"Zellen" aus Datenbank für LogIn rauslesen //PhP

Thoma

Mitglied
Hallo erstmal, ich habe mich gerade eben wegen diesem Thema registriert.
Und zwar ist meine Frage: Wie kann ich (wie schon oben erwähnt) "Zellen" aus einer MySQL-Datenbank herauslesen, um sie dann mit den Eingaben des Benutzers zu vergleichen?
Oder gibt es eine andere, viel leichtere Methode?
Hier mein Script... ich weiß nicht, ob ihr damit viel anfangen könnt...
PHP:
<?php

$nm = mysql_real_escape_string($_GET["name"]);
$pw = mysql_real_escape_string($_GET["pass"]);


//echo "<b> Benutzereingabe_Name: </b>";
//echo $nm;
//echo "<BR>";
//echo "<b> Benutzereingabe_Passwort: </b>";
//echo $pw;
//echo "<BR>";
//echo "<BR>";

$db = mysqli_connect("localhost", "root", "",  "test");

if (!$db)
    {
    exit("Verbindungsaufbau fehlgeschlagen: ".mysqli_connect_error());
    }
   
if($db)
    {
        echo "<b>Erfolgreich mit Datenbank verbunden! </b><br />";
        echo "<BR>";
    }

mysql_select_db("test") or die(mysql_error());

$SQL =" SELECT benutzername, passwort FROM login WHERE passwort='". $pw ."' AND beutzername='". $nm ."'";

$result = mysql_query($SQL);


//while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
//{
    //echo "<b>Benutzername_Datenbank: </b> ";
    //echo $row["benutzername"] . "<br />";
    //echo "<BR>";
    //echo "<b>Passwort_Datenbank: </b>";
    //echo $row["passwort"] . "<br />";
    //echo "<BR>";
       
//}

//if ($dbpw == $pw && $dbnm == $nm)
//{ 
    //echo "Eingabe erfolgreich!";
//}
//else
//{
    //echo "Falsche Eingabe";
//}
//mysql_free_result($result);   

//while($row = mysqli_fetch_object($dbn))
//{
  //echo $row->benutzername;
//}
// https://www.administrator.de/frage/php-vergleich-daten-formular-datenbank-schl%C3%A4gt-fehl-221805.html
//    if ($row[1] === $_GET["name"])
    //  {
    //     verbinde mit Auswahl;
    //  }


//$db_erg = mysqli_query( $db, $SQL );

//if (! $db_erg)
//{
    //  die("Ungültige Abfrage: " . mysqli_error());
//}


?>

Das Auskommentierte waren Ideen, welche mir aber auch nicht weiter geholfen haben...
 
Zuerst einmal allgemein
mysql_* ist veraltet. Du solltest mysqli_* verwenden

Was hat an der Version mit mysql_fetch_array() nicht funktioniert?
 
@Yaslaw
Durch die while-Schleife mit dem array bekomme Ich ja nur die Daten ausgegeben, ich möchte aber den Datenbankinhalt so herausbekommen, dass ich Ihn mit den Eingaben vergleichen kann.

Hättest du da vielleicht eine Lösung?

Habe keine Ahnung wie ich weitermachen soll...

LG Thoma
 
Eben mal so schnell geschrieben. Nicht genau auf Fehler geachtet, sollte aber klappen.
Sind abere andere Daten (Datenbank usw) als Du verwendest.
PHP:
    $db = new mysqli("localhost", "", "", "test");

    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    if(isset($_GET['name'])) $nm = $db->real_escape_string($_GET["name"]); else $nm = "";
    if(isset($_GET['pass'])) $pw = $db->real_escape_string($_GET["pass"]); else $pw = "";

    $SQL =" SELECT username, password FROM users WHERE password='". $pw ."' AND username='". $nm ."'";

    $result = $db->query($SQL);

    while($row = mysqli_fetch_array($result)){
        $dbpw = $row["password"];
        $dbnm = $row["username"];
    }

    if ($dbpw == $pw && $dbnm == $nm){
        echo "Eingabe erfolgreich!";
    }else{
        echo "Falsche Eingabe";
    }
    mysqli_free_result($result);
 
Vielen Dank für deine Antwort @DerKleene1 !
Nur kommen bei mir noch ein Paar Fehlermeldungen:
Zum einem:
mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given bei diesem Statement $result = $db->query($SQL);

Dann noch :
Undefined variable: dbpw hier if ($dbpw == $pw && $dbnm == $nm){

Und noch :
mysqli_free_result() expects parameter 1 to be mysqli_result, boolean given bei dem Statement: mysqli_free_result($result);

Ich hoffe, du kannst mir helfen...
 
Gerade wenig Zeit, aber hier mal eine überarbeitete Version:
PHP:
    if(isset($_GET['name']) && isset($_GET['pass'])){
      $nm = $db->real_escape_string($_GET["name"]);
      $pw = $db->real_escape_string($_GET["pass"]);

      $SQL =" SELECT username, password FROM users WHERE password='". $pw ."' AND username='". $nm ."'";

      if($result = $db->query($SQL)){
        $rowcount=mysqli_num_rows($result);
        if($rowcount == 1){
          while($row = mysqli_fetch_array($result)){
              $dbpw = $row["password"];
              $dbnm = $row["username"];
          }
          if ($dbpw == $pw && $dbnm == $nm){
              echo "Eingabe erfolgreich!";
          }
        }else{
            echo "Falsche Eingabe";
        }
      }
      mysqli_free_result($result);
    }else{
      echo "Bitte Name und Passwort eingeben!";
    }
 
Vielen Dank!! Es funktioniert!
2 Fragen hätte ich dennoch:
1. Für was steht dieses Statement
  1. else{
  2. echo "Bitte Name und Passwort eingeben!";
  3. }
2. Wie würde ich das Ganze jetzt verschlüsseln? (Mit md5 am besten)
 
Hi

falls du gerade irgendein PHP-Buch/Tutorial/sonstwas liest, das dir die Sachen so erklärt, bitte gleich entsorgen. (Es gibt leider sehr viele schlechte und/oder veraltete Anleitungen zu PHP).

Dass es die mysql_ - Funktionen, die du vorher verwendet hast, gar nicht mehr gibt, hat dir ja schon jemand gesagt. Sie wurden entfernt, nachdem man mehrere Jahre schon gewusst hat, dass sie am Ende sind. Mit anderen Worten, Code damit funktioniert einfach nicht mehr. Die letzte PHP-Version, die sie noch hatte, ist auch nicht mehr supported.

Der nächste Problempunkt ist, dass MD5 seit 20 Jahren (!) nicht mehr so sicher ist, wie es ein sollte. Nimm bcrypt (http://php.net/manual/de/function.password-hash.php) (Außerdem ist MD5 keine Verschlüsselung, war es auch nie).
 
Zuletzt bearbeitet:
Zurück