我似乎無法得到password_verify工作W /在我的PHP PDO代碼。我的傳球領域存儲爲varchar(255)。我一直在閱讀類似的問題,但從我可以告訴我已經設置正確。我仍然要失去一些東西。 我的註冊頁面如下..什麼是使用password_verify與PDO的正確方法?
$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。您需要提供明文密碼和散列密碼(來自數據庫)。另外你爲什麼要修剪密碼? –