我創建了一個腳本來將用戶登錄到網站,但是我永遠無法獲得身份驗證,即使使用正確的密碼。其他一切正常工作。在文本框中輸入用戶名和密碼後按下登錄按鈕即可激活此腳本。以下是腳本:Php登錄腳本根本沒有登錄
<?php
session_start();
include('connection.php');
//STEP 2 Declare Variables
$Name = $_POST['username'];
$Pass = md5($_POST['password']); // Encrypt password with md5() function.
$Query = mysql_query("SELECT * FROM Users WHERE username='$Name' AND password='$Pass'");
$NumRows = mysql_num_rows($Query);
$_SESSION['username'] = $Name;
$_SESSION['password'] = $Pass;
//STEP 3 Check to See If User Entered All Of The Information
if(empty($_SESSION['username']) || empty($_SESSION['password']))
{
die("Go back and login before you visit this page!");
}
if($Name && $Pass == "")
{
die("Please enter in a name and password!");
}
if($Name == "")
{
die("Please enter your name!" . "</br>");
}
if($Pass == "")
{
die("Please enter a password!");
echo "</br>";
}
//STEP 4 Check Username And Password With The MySQL Database
if($NumRows)
{
// If The User Makes It Here Then That Means He Logged In Successfully
echo "";
$_SESSION['username']=$Database_Name;
}
else
{
die("Incorrect Username or Password!");
}
?>
我登錄後,即使輸入的用戶名和密碼正確,我也會得到「不正確的用戶名或密碼!」。輸入的密碼是md5()在數據庫中的散列值。這個腳本幾年前在我第一次創建它時就工作了。下面發佈的是DB的屏幕截圖。任何幫助將不勝感激
下面是一個用戶的圖片在我DB named Bob who is using an MD5 hash of the word "Password" as his Password.
這裏是呼應results的照片時,他嘗試登錄。
您當前的代碼具有SQL注入,這意味着任何人都可以讀取或銷燬任何數據。請閱讀:[如何防止PHP中的SQL注入?](http://stackoverflow.com/q/60174/660921)您也不想使用'md5()'進行密碼散列,因爲它的* *不安全,可以非常容易地被黑客入侵。改用'crypt()'。另外,'mysql'擴展在PHP 7中已被棄用和刪除。使用'mysqli'或PDO。 – Carpetsmoker