나는 내 php PDO 코드에서 작동하도록 password_verify를 얻을 수 없다. 내 패스 필드는 varchar (255)로 저장됩니다. 나는 비슷한 질문을 읽었지 만, 나는 그것이 올바르게 설정되어 있다고 말할 수있다. 나는 아직도 뭔가를 놓치고 있어야합니다. 다음과 같이 내 등록 페이지가 .. 암호화 된 암호가 성공적으로 내 데이터베이스에 저장됩니다PDO에서 password_verify를 사용하는 올바른 방법은 무엇입니까?
$user = $_POST['username']
$pass = $_POST['pass'];
$passH = password_hash($pass, PASSWORD_DEFAULT);
$query = $con->prepare("INSERT INTO emps (user, pass) VALUES (?, ?)");
$query->execute([$user, $passH]);
입니다.
내 로그인 페이지는 다음과 같이 ...입니다 로그인 페이지의
if(isset($_POST['login'])) {
$username = $_POST['username'];
$pass = trim($_POST['pass'];
$passH = password_hash($pass, PASSWORD_DEFAULT);
$sel_user = $con->prepare("SELECT id, username, pass, gid FROM emps WHERE gid!=4 AND username=?");
$sel_user->execute([$username]);
$check_user=$sel_user->fetch();
if(count($check_user)>0 && password_verify($passH, $check_user['pass'])) {
$_SESSION['username']=$check_user['username'];
header("Location: xadmin.php");
exit;
}
else {
echo "<script>alert('Not Found')</script>";
바디 ..
<form action="login.php" method="post">
<table width="100%" border="0">
<tbody>
<tr>
<td bgcolor="#3B3B3B" height ="35" class="BodyTxtB" align="center">Administrator Login</td></tr>
<tr height="20"><td></td></tr>
<tr>
<td class="BodyTxtB" align="center">Username</td>
</tr>
<tr>
<td class="BodyTxtB" align="center"><input type="text" class="BodyTxtBC" name="username" required="required"/></td>
</tr>
<tr height="20"><td></td></tr>
<tr>
<td class="BodyTxtB" align="center">Password</td>
</tr>
<tr>
<td class="BodyTxtB" align="center"><input type="password" class="BodyTxtBC" name="pass" required="required"/></td>
</tr>
<tr height="20"><td></td></tr>
<tr height="35"><td align="center"><input type="image" src="images/btn_login.jpg" name="login" value="Login"/>
<input type="hidden" name="login" value="Login" /></td></tr>
<tr height="20"><td></td></tr>
</tbody>
</table>
</form>
사람이 오류를 발견 할 수 있습니까?
https://phpdelusions.net/pdo/password_hash –
확인하기 전에 암호를 해시하는 이유는 무엇입니까? –
password_hash가 잘못 사용되었습니다. 데이터베이스에서 해시 된 비밀번호로 일반 텍스트 비밀번호를 제공해야합니다. 또한 왜 당신은 비밀 번호를 트리밍입니까? –