0
我無法通過此代碼登錄,因爲我使用了crypt功能,並且當我想要登錄時密碼檢查與密碼錶單數據庫的編碼有問題,並將其與密碼匹配輸入:使用密碼登錄在php
$username = $_POST['username'];
$password = $_POST['password'];
$check_error=0;
include ('connect-db.php');
$username = mysql_real_escape_string($username);
$password = crypt($password, '$2a$07$usesomesillystringforsalt$');
if (crypt($user_input, $digest) == $digest)
if ($check_error != 1){
$result = mysql_query ("SELECT * FROM user WHERE username = '$username' AND password = '$password'");
$count = mysql_num_rows($result);
if($count > 0){
session_start();
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
echo "login<br /><br />";
}
else{
echo "not login!<br />";
}
}
哇......這裏有很多錯誤。爲什麼你要把密碼放在$ _SESSION中?什麼是'$ user_input'和什麼是'$ digest'?因爲這些變量都不在您的代碼中。在if(crypt($ user_input,$ digest)== $ digest)'之後,你還缺少一個開始插入符。另外,在你嘗試匹配它之前,你似乎在'$ password'上運行crypt(),這是錯誤的。你運行類似'if(crypt($ _ POST ['password'],$ valuefromdatabase))=== $ valuefromdatabase)' – junkfoodjunkie
1.您使用的是古老的API,我強烈建議您切換到'mysqli_'或PDO **準備好陳述**。 2.在會話中存儲密碼是一個壞主意。 – Qirel
**警告**:編寫您自己的訪問控制層並不容易,並且有很多機會使其嚴重錯誤。請不要在[Laravel](http://laravel.com/)等任何現代開發框架(http://codegeekz.com/best-php-frameworks-for-developers/)上編寫自己的認證系統,內置了強大的[認證系統](https://laravel.com/docs/5.2/authentication)。絕對不要遵循[推薦的安全最佳實踐](http://www.phptherightway.com/#security)和**從不將密碼存儲爲純文本**。 – tadman