2016-07-17 21 views
-4

signup.phpKann nicht mit md5 Passwort aus der Datenbank

$password_unencrypted = $_POST['passwd']; 

$password=md5($password_unencrypted); 

$query = "INSERT INTO Customers (firstname, lastname, username, password, " .  "gender,mobile,email) " .  "VALUES ('$first_name', '$last_name', '$user_name', '$password', " .  " '$gender','$mobile','$email')"; 

login.php

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

$sql = ("select * from Customers where username='".$username."' and password='".$password."'") or die('Error connecting to MySQL server.'); 

    $query = mysqli_query($con,$sql); 

    $result=mysqli_fetch_row($query); 



     if($result) 
     {    
      $_SESSION['username']=$username; 
      header('location:home.html');   
     } 
     else 
     { 
      echo md5($_POST['password']); 
      echo 'Your entered username or password is incorrect'; 
     } 

In über die Registrierung und Login-Codes vergleichen Ich Speicherung md5 für Passwort Anwendung

Ich überprüfte in der Datenbank ist das md5 Passwort korrekt gespeichert, aber es wird nicht korrekt neu geladen (glaube ich)

t rying, um sich in die Seite einzuloggen, schlägt sie fehl

FYI: echo md5 ($ _ POST ['passwort']); in login.php ist gleiche Passwort in der Datenbank hier

+5

Bitte verwenden Sie PHP [integrierte Funktionen Passwörter zu handhaben] (http://php.net/manual/de/ref.password.php) ([tutorial] (http://jayblanchard.net/proper_password_hashing_with_PHP.html)). Wenn Sie eine PHP-Version kleiner als 5.5 verwenden, können Sie das Paket password_hash() [compatibility pack] (https://github.com/ircmaxell/password_compat) verwenden. Sie sollten auch parametrisierte Abfragen mit Platzhaltern verwenden, anstatt Variablen direkt in die Abfragezeichenfolge zu verketten. – JimL

+0

Empfohlen lesen: [Stackoverflow: Warum nicht MD5 für Passwort-Hashing verwenden?] (Http://StackOverflow.com/questions/30496061/Why-Not-use-MD5-for-Password-hashing) –

+2

1. Verwenden Sie nicht MD5 oder SHA-1, verwenden Sie eine SHA-2-Funktion wie SHA-256. 2. Verwenden Sie kein statisches Salz, jeder Eintrag, der das gleiche Passwort verwendet, hat das gleiche Salz. Wenn eines entdeckt wird, werden alle anderen ebenfalls angezeigt. Verwenden Sie ein zufälliges Salz, das ebenfalls in der Datenbank gespeichert ist. 3. Verketten Sie nicht nur das Salz, sondern verwenden Sie eine HMAC-Funktion. 4. Es ist notwendig, die Hashfunktion zu iterieren, da die Berechnung von Hashes sehr schnell ist. 5. Verwenden Sie Standard-Passwortableitungsfunktionen wie "Crypto.HashPassword", "PBKDF2", "password_hash", "bcrypt", script usw. – zaph

Antwort

1
gespeichert ist

ist es, wie Sie Ihren login.php Code beheben

Sie völlig falsch waren Überprüfung Sie zuerst, wenn zurückgegeben, wenn die Abfrage überprüfen müssen succeeded läuft dann überprüfen Reihen sind mehr als 0 das bedeutet, dass der Benutzername korrekt ist und wir gehen zum Passwort überprüfen, wenn alles in Ordnung ist wir starten die Sitzung vorausgesetzt, Sie haben session_start() oben auf Ihrer Seite, wenn nicht vor $_SESSION['username'] = $username; Handbuch für password_hash() und password_verify()

auf register.php Ändern Sie das Speichern des Kennworts in die Datenbank $password = md5($_POST['password']); zu $password = password_hash($_POST['password'], PASSWORD_DEFAULT);

<?php 
if isset($_POST['submit']) { 
$username= mysqli_real_escape_string($con, trim($_POST['username'])); 
$password = trim($_POST['password']); // no need to sanitize the password 

$sql = "select * from Customers where username = '" .$username."' "; // you don't need or Die() it's just a string 
    if ($result = mysqli_query($con,$sql)) //check if the Query succeeded running 
    { 
    $count = mysqli_num_rows($result); 
     if($count > 0) 
     { // if username exists we proceed to checking password 
     $fetch = mysqli_fetch_assoc($result); 
     $hashedpassword = $fetch["password"]; 

      if (password_verify($password, $hashedpassword)) 
      { //checking password 
      $_SESSION['username']=$username; 
      header('location:home.html'); 
      exit; 
      }else { 
        echo "incorrect username or password"; // you don't want to tell him that the username is fine but the password is not correct 
      }      
      } else { 
      echo "incorrect username or password"; 
     }  
    } else { 
      echo 'Query failed to run'; 
     } 
}    
?> 
0

signup.php

$password_unencrypted = $_POST['passwd']; 

$hashed_password = password_hash($password_unencrypted,PASSWORD_DEFAULT); 



$query = "INSERT INTO Customers (`firstname`, `lastname`, `username`, 
      `password`, `gender`, `mobile`, `email`) VALUES ('$first_name', '$last_name', 
      '$user_name', '$hashed_password', '$gender', '$mobile', '$email')"; 

login.php

<?php 
if isset($_POST['submit']) { 

    $password = $_POST['password']; 
    $username=$_POST['username']; 

    $sql = ("select * from Customers where username='".$username."'") or die('Error connecting to MySQL server.'); 
    $result = mysqli_query($con,$sql); 
    $row = mysqli_fetch_assoc($result); 

// $result= mysqli_fetch_row($query); 
    if (password_verify($password, $row['password'])) 
    { 

     $_SESSION['username'] = $username; 
     header('location:home.html');   
    } 
    else 
    { 
     echo 'Your entered username or password is incorrect'; 
    } 
    }