我必須用我的PHP登錄腳本修復一些錯誤,當用戶使用大寫字母的帳戶時,它不會讓他登錄全部小寫,所以我決定解決,但是,它不會登錄,它只是重定向到登錄與我的消息「意外的錯誤發生」。登錄PHP腳本用戶名和密碼是正確的,但不會登錄
它通過用戶名檢查,但不是密碼,並且它不返回密碼是不正確的。
我試着做一個新的帳戶,它仍然進入該錯誤頁面,但是這一次,它實際上登錄了我,但沒有與您已成功登錄,並且現有用戶無法登錄,但是我做了一個新的。
而且我嘗試了密碼重置,它的工作原理,但不會導致成功登錄消息。
我做的其他更改是密碼散列,因爲我使用用戶名密碼鹽,而我從$hash = hash('sha256',$Username.$Password.$Salt);
更改爲$hash = hash('sha256',strtolower($Username).$Password.$Salt);
,因爲當用戶名是大寫或小寫時,它對密碼檢查有影響。
我的代碼:
<?php
/* Mysql data */
$MysqlUsername = "root";
$MysqlPassword = "*********";
$MysqlHostname = "localhost";
$MysqlDatabase = "teamgamersnet";
$Salt = "******";
$Username = $_POST['Username'];
$Password = $_POST['Password'];
$Remember = $_POST['Remember'];
$Cookie = "TGN";
$IP = $_SERVER['REMOTE_ADDR'];
if (empty($Username) || empty($Password)) { die("Please fill in all the fields"); }
$hash = hash('sha256',strtolower($Username).$Password.$Salt);
$Sql = new mysqli($MysqlHostname, $MysqlUsername, $MysqlPassword, $MysqlDatabase);
if ($Sql->connect_error){ echo $Sql->connect_error; }
$sUser = $Sql->real_escape_string($Username);
$sPass = $Sql->real_escape_string($Password);
$xPass = $Sql->real_escape_string($hash);
$CheckUser = $Sql->query("SELECT Username FROM `users` WHERE `Username` = '".$sUser."'");
$CheckPass = $Sql->query("SELECT Password FROM `users` WHERE `Username` = '".$sUser."'");
$CheckActive = $Sql->query("SELECT Activated FROM `users` WHERE `Username` = '".$sUser."'");
if ($CheckUser->num_rows == 0) { header("Location: /?p=Login&wrongusr=true"); die(); }
$xCheckUser = $CheckUser->fetch_array(MYSQLI_ASSOC);
$xCheckPass = $CheckPass->fetch_array(MYSQLI_ASSOC);
$xCheckAct = $CheckActive->fetch_array(MYSQLI_ASSOC);
if ($xCheckAct['Activated'] == "false") { header("Location: /?p=Login&activate=true"); die(); }
if(strtolower($Username) == strtolower($xCheckUser['Username'])) { // Check if username match
if($hash == $xCheckPass['Password']) { // Check if password is correct
if(isset($Remember)){
setcookie ($Cookie."User", htmlspecialchars($Username));
setcookie ($Cookie."Pass", $hash);
}
else
{
setcookie ($Cookie."User", htmlspecialchars($Username), time() + 3600);
setcookie ($Cookie."Pass", $hash, time() + 3600);
}
header("Location: /?login=true"); // Send them to home page
}
else
{
header("Location: /?p=Login&wrongpwd=true"); // Send them to home page
}
header("Location: /?p=Login&unxer=true"); // Username error, Idk why
}
?>
而不是像這樣使用cookie,你應該檢查到[Sessions](http://www.php.net/manual/en/book.session.php) – h2ooooooo
你有什麼錯誤嗎? – Bajrang
@lucianie錯誤是,當你登錄時,它會記錄你的旅館,但它會重定向到登錄頁面,出現錯誤「發生了失敗的錯誤,請重試..」,我設置了,而不是成功登錄的主頁。 – Teknikk