2016-05-03 8 views
-2

ich einen einfachen Login-Skript bekam, die das Passwort ein und überprüfen Sie die corrispondence mit der Datenbank schreibenPHP: Session basierte Login-Skript wird nicht funktionieren

session_start(); 
include 'core/config.php'; 
include 'core/db.php'; 
$checkPWD = $DB_CON -> query('SELECT * FROM users'); 
$checkPWD->execute(); 
$pwd = $checkPWD->fetchAll(); 
if($_POST['password']) { 
    $md5pwd = md5($_POST['password']); 
    if($md5pwd == $pwd[2]) { 
     $_SESSION['login'] = 'true'; 
     $_GET['page'] = 'dashboard'; 
    } else { 
     $_GET['error'] = 'true'; 
    } 
} 

Dieser Ausgang und bekam $ _GET [ ‚error‘] auf wahr. Das Passwort wird in MD5 in der Datenbank gespeichert.

Vielen Dank

+0

was ist der Fehler? – Mohini

+0

Das Skript beenden, um den else und $ _GET ['Fehler'] = 'True' erhalten, auch wenn das Passwort korrekt ist – andreaem

+1

Dieses Skript ist ein heißes Durcheinander. Sie wählen die gesamte Benutzertabelle aus? Und dann MD5 das Passwort (das ist [NICHT SICHER] (http://security.stackexchange.com/questions/52461/how-weak-is-md5-as-a-password-hashing-function)). Es gibt auch keine Schleife für Ihre Daten. [Wechsel zu password_hash] (http://stackoverflow.com/questions/14992367/using-php-5-5s-password-hash-and-verify-function-am-i-doing-it-right) – Machavity

Antwort

1

Sie es Abfrage in die Sie tun sollten:

$md5pwd = md5($_POST['password']); 

$checkPWD = $DB_CON->query("SELECT * FROM users WHERE password = '{$md5pwd}' LIMIT 1"); 
$pwd = $checkPWD->fetchAll(); 

if ($pwd) { 
    // Has find someone 
} else { 
    // Hasn't find no one 
} 
+0

Geändert den Code, aber das Ergebnis ist das gleiche, es speichert keine Sitzung Wert – andreaem

+0

Er wählt die gesamten Benutzer Tabelle. Also, wenn das nicht mit dem ersten Datensatz übereinstimmt, haben Sie kein Glück – Machavity

+0

Ich änderte es, nur ich dachte, er weiß, dass die zweite Reihe war die richtige – Grommy