一個簡單的註冊和登錄頁面的網站。我正試圖加密密碼+醃製。這就是我所做的,但我不確定它是否正確。PHP crypt密碼
這是在註冊頁面會發生什麼:
$blowfish = '$2a$10$';
$salt = '8dF$d_3';
$hashedPass = crypt($password,$blowfish . $salt);
在數據庫中,密碼爲 「RAYray99」 存儲爲「$ 2A $ 10 $ 8dF $ D_3 $$$$$$$$$$ $$$$。wxsfa7X.nkcGqldJ9fujdd8eY.H85uC」
在登錄頁面,我被困在如何檢查與數據庫中的密碼輸入的密碼。
這是登錄電子PHP腳本,驗證用戶:
mysql_connect("$db_host", "$db_username", "$db_pass") or die(mysql_error());
//select the database or return error message
mysql_select_db("$db_name") or die("database does not exist");
$email = stripslashes($_POST['email']);
$email = strip_tags($email);
$email = mysql_real_escape_string($email);
$password = ereg_replace("[^A-Za-z0-9]", "", $_POST['password']); // filter everything but numbers and letters
$password = crypt($password);
$sql = mysql_query("SELECT * FROM members WHERE email='$email' AND password='$password' AND activateemail='1'");
$login_check = mysql_num_rows($sql);
if($login_check > 0){
while($row = mysql_fetch_array($sql)){
// Get member ID into a session variable
$id = $row["id"];
session_register('id');
$_SESSION['id'] = $id;
// Get member username into a session variable
$username = $row["username"];
session_register('username');
$_SESSION['username'] = $username;
// Update last_log_date field for this member now
mysql_query("UPDATE members SET lastlogin=now() WHERE id='$id'");
// Print success message here if all went well then exit the script
header("location: account.php");
exit();
} // close while
} else {
// Print login failure message to the user and link them back to your login page
print '<br /><br /><font color="#FF0000">ERROR TRY AGAIN </font><br />;
exit();
}
我的問題是如何將我驗證的登錄密碼時應數據庫的登錄頁面上輸入與1。
謝謝 雷
不要加密密碼......而不是加密!擺脫你的''標籤。這些已被棄用多年!最後,根據RFC,您的'Location:'標頭必須是絕對URL。是的,相對路徑通常會起作用,但當它不行時,你不想陷入麻煩。另外,您還需要進行SQL注入。 **對於SQL注入,剝離斜槓不是一種適當的保護措施!通過準備好的查詢學習PDO。 – Brad
爲什麼你加密密碼而不是散列(解密幾乎不可能)呢? 密碼的過濾使其更加不安全!順便說一句['ereg_replace()'](http://php.net/manual/function.ereg-replace.php)已被棄用。 – ComFreek
與您的問題無關的提示,您不需要將變量放在引號中就可以使用它們。例如,你的connect調用可以是'mysql_connect($ db_host,$ db_username,$ db_pass)' – jprofitt