2017-10-09 6 views
0

Je rencontre des problèmes avec mon fichier de connexion en raison de l'implémentation de password_verify. Le fichier fonctionnait correctement sans la validation password_verify().Php Connexion ne fonctionne pas avec password_verify (Android)

Ci-dessous mon fichier de connexion:

<?php 
     include 'config.inc.php'; 
// Innitialize Variable 
     $result=''; 
     $username = $_POST['username']; 
     $userpassword = $_POST['password']; 

     // Query database for row exist or not 
     $sql = 'SELECT password FROM user WHERE email = :username'; 
     $stmt = $connection->prepare($sql); 
     $stmt->bindParam(':username', $username, PDO::PARAM_STR); 
     $stmt->bindParam(':userpassword', $userpassword, PDO::PARAM_STR); 
     $stmt->execute(); 

     // $row = mysqli_fetch_array($stmt); 
     $row = $stmt->fetchAll(PDO::FETCH_ASSOC); 

     if (password_verify($userpassword, $row['password'])) { 
      $result="true"; 
        } else { 
         $result="false"; 
          } 

     // send result back to android 
     echo $result; 

    ?> 

est aussi mon fichier de registre ici (qui fonctionne bien) pour référence:

<?php 

include 'config.inc.php'; 

// Check whether username or password is set from android 
if(isset($_POST['user']) && isset($_POST['email']) && isset($_POST['password'])) 
{ 
     // Innitialize Variable 
    $result=''; 
     $user = $_POST['user']; 
     $email = $_POST['email']; 
     $password = $_POST['password']; 

     // Encryption of password 
     $options = [ 
     'cost' => 12, 
     ]; 
     $password = password_hash($password, PASSWORD_BCRYPT, $options); 

     // Query database for row exist or not 
     $sql = 'INSERT INTO user VALUES (NULL, :user, :email, :password, 0, 1, 1)'; 
     $stmt = $connection->prepare($sql); 
     $stmt->bindParam(':user', $user, PDO::PARAM_STR); 
     $stmt->bindParam(':email', $email, PDO::PARAM_STR); 
     $stmt->bindParam(':password', $password, PDO::PARAM_STR); 
     $stmt->execute(); 
    if($stmt->rowCount()) 
     { 
     $result="true";  
     } 
     elseif(!$stmt->rowCount()) 
     { 
      $result="false"; 
     } 

     // send result back to android 
     echo $result; 
} 

?> 

Merci pour votre soutien!

Oliver

+0

il semble que '$ row ['mot de passe']' n'est pas hashed. Consultez le manuel [password_verify] (http://php.net/manual/fr/function.password-verify.php) –

+0

Aussi quand vous avez déjà délimité here' $ stmt-> bindParam (': mot de passe', $ mot de passe, PDO :: PARAM_STR); 'alors quel est le but de' vérifier 'à nouveau? –

+0

Ne devriez-vous pas avoir une erreur pour lier ': userpassword' à la connexion SELECT sans? – mario

Répondre

-1

1> S'il vous plaît vérifier la base de données de votre champ de mot de passe est-il la valeur de hachage formated insert

2> Ensuite, votre page sql connexion requête check

3> si le mot de passe est hachage insertion formated valeur vous devez être sélectionner votre mot de passe avec fonction de hachage php pour sélectionner votre mot de passe post