모든 사람이 md5가 더 이상 안전하지 않다고 말하기 때문에 저는 내 등록자와 로그인을 다른 암호화 (Phpass)로 변경하고 있습니다. 나는 등록 기능을 작동 시키려고 노력했지만 로그인이 작동하지 않는 이유를 파악할 수 없다. 이 코드는 오류없이 실행되지만이 행에서 전달되지 않습니다. if($stm->rowCount()>0){}
Phpass 로그인이 작동하지 않습니다.
내 이전 로그인 버전 인 주석 처리 된 코드는 무시하십시오. 다른 제안은 환영합니다! 사용자가 더 사용자가없는 경우는 하늘을 반환, 데이터와 배열을 반환 $row = $stm->fetch(PDO::FETCH_ASSOC);
존재하는 경우
다음 rowCount()
을 대체하는 방법에는 여러 가지가 있기 때문에
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 document on rowCount] (http://php.net/manual/en/pdostatement.rowcount.php)를 읽으면 SELECT 문을 사용할 때 원하는 결과를 얻지 못할 수도 있다고합니다. –
@Gumbo db에 저장된 해시 된 암호는 Select에서 제공되므로 문제가 있다고 생각하지 않습니다 .. – miguelfsf