[英]How do I check the password?
最近發現我的登錄處理程序中存在問題。 事實是,即使輸入的密碼正確並且與數據庫中的密碼匹配,腳本仍然會將我發送到錯誤頁面。
session_start();
include ("db.php");
if (isset($_POST['login'])) {
$login = $_POST['login'];
$login = stripslashes($login);
$login = htmlspecialchars($login);
$login = trim($login);
if ($login == '') {
unset($login);
}
}
if (isset($_POST['password'])) {
$password=$_POST['password'];
$password = stripslashes($password);
$password = htmlspecialchars($password);
$password = trim($password);
$password = hash("md5",$password);
if ($password =='') {
unset($password);
}
}
if (empty($login) or empty($password))
{
exit (header('location:index.php'));
}
$result = mysql_query("SELECT * FROM users_data WHERE login='$login'");
$row = mysql_fetch_array($result);
if (empty($row['password']))
{
exit (header('location:mistake.php'));
}
else {
if ($row['password']==$password) {
$_SESSION['login']=$row['login'];
$_SESSION['users_id']=$row['users_id'];
header('location:first.php');
}
else {
header('location:mistake.php');
}
}
HTML形式:
<form action="login.php" method="post" class="login">
<label><span>Login:</span>
<input name="login" type="text" size="20" maxlength="100">
</label>
<label><span>Password:</span>
<input name="password" type="password" size="20" maxlength="100">
</label>
<p>
<input type="submit" name="submit" class ="submit" value="Login">
</p>
UPD:謝謝您的回答,終於找到問題所在了-我剛剛在數據庫中指定的密碼值長度不足。
首先,為什么將密碼存儲在數據庫中而不散列密碼(例如md5)。
如果這樣做,則無需處理密碼,您只需將存儲的md5(password)
與用戶發布的密碼的md5哈希值進行比較即可。
另外,由於編碼的原因,很可能會將您重定向到mistake.php
頁面而不是success.php
頁面。
如果您向我們提供了用於測試代碼的密碼(假設您正在測試它;;)),這將有所幫助。
干杯!
編輯:請查看更好的加密技術,如@jayblancard在以下評論中所建議。
嘗試使用isset()代替空
if (isset($row['password']))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.