Я меняю свой регистрационный учет и логин на другое шифрование (Phpass), потому что все говорят, что md5 уже не безопасен. Я сумел заставить функцию регистра работать, но не могу понять, почему login aint работает. Этот код работает без ошибок, но не проходит из этой строки. if($stm->rowCount()>0){}
Вход в Phpass не работает
Пожалуйста, игнорируйте прокомментированный код, его старую версию входа. Любые предложения приветствуются!
include("include/connection.php");
require_once('include/PasswordHash.php');
function login($db){
if (isset($_GET["type"])){
if($_GET["type"]=="log" && isset($_POST['email']) && isset($_POST['password'])){
session_start();
$email = $_POST['email'];
$password = $_POST['password'];
$hasher = new PasswordHash(8, false);
if($email=='' || $password==''){
echo "<font style='background-color: #F9C5CA'>Error: Please fill the required fields.</font>";
}else{
//$password = md5($password);
$pass = $hasher->HashPassword($_POST['password']);
$sql = "SELECT email,password,id FROM user WHERE email=? AND password=?";
$stm = $db->prepare($sql);
$stm->execute(array($email,$pass));
$row = $stm->fetch(PDO::FETCH_ASSOC);
/*if($stm->rowCount()>0){
$_SESSION['id']=$row['id'];
header('Location: cpanel/#welcome');
}else{
echo "<font style='background-color: #F9C5CA'>Error: Your email and/or password are incorrect. Please try again.</font>";
}*/
if($stm->rowCount()>0){
if ($hasher->CheckPassword($pass,$row['password'])) {
$_SESSION['id']=$row['id'];
header('Location: cpanel/#welcome');
exit();
}else{
echo "<font style='background-color: #F9C5CA'>Error: Your email and/or password are incorrect. Please try again.</font>";
}
}
}
}
}
}
Вам необходимо получить сохраненный пароль из базы данных, чтобы проверить его с помощью прилагаемого. – Gumbo
Ваша проблема может быть функцией rowCount(). Если вы читаете [документ PDO в rowCount] (http://php.net/manual/en/pdostatement.rowcount.php), он говорит, что вы не можете получить желаемые результаты при использовании инструкции SELECT. –
@Gumbo Сохраненный хэшированный пароль на db поступает из Select, поэтому я не думаю, что проблема там. – miguelfsf