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
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) –
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? –
Ne devriez-vous pas avoir une erreur pour lier ': userpassword' à la connexion SELECT sans? – mario