2016-06-10 143 views
0

這裏是我一直在嘗試創建一個登錄系統與PHP和MySQL的代碼,但如果其他條件不能正常工作,我給正確的值(存儲在數據庫)上執行它的瀏覽器,它會顯示無效的電子郵件或密碼,而不是顯示成功登錄。這裏是代碼..使用php和mysql創建登錄頁面

<HTML> 
<body> 

<?php 

$email= $_POST['email']; 
$password=$_POST['password']; 

    echo "Email:".$email. " <br>"; 
echo "Password: ".$password; 

mysql_connect("localhost","root",""); 
mysql_select_db("log"); 

$sql = mysql_query("SELECT * FROM `details` WHERE `Email` = '$email' AND `Password` = 

'$password'") or die("I am dead"); 
while($row = mysql_fetch_array($sql)){ 
    echo $row['Email']. " - ". $row['Password']; 
    echo "<br />"; 
} 

if ($row['Email'] == $email && $row['Password'] == $password){ 
echo "Login Successfull" ; 
} 
else { 
echo "<br> Invalid Email or Password"; 
} 


?> 

</body> 
</html> 
+0

使用'mysqli',而不是'mysql'。問題在於你正在訪問循環外的'$ row'數組。 – ASR

+0

您是否以純文本格式存儲密碼?除了使用'mysqli'你還需要逃避用戶輸入以防止注入攻擊 – Tristan

+0

我寫了這個[answer](http://stackoverflow.com/a/33665819)起來。這在mysqli和pdo中是一個很好的藍圖。不幸的是,gent是數據庫的新手,它下面有50條評論。祝你好運 ! – Drew

回答

0

使用mysqli作爲mysql折舊嘗試。

這裏你不需要循環。只是檢查與mysqli_num_rows

if(mysqli_num_rows($sql) > 0){ 
    echo "Login Successfull" ; 
}else { 
    echo "<br> Invalid Email or Password"; 
} 
0

我怕我還不具備代表爲簡單地添加此評論,因此必須把它作爲一個答案。 你寫的代碼很容易受到SQL注入攻擊。如果你不熟悉這個,那麼YouTube上有一些很棒的視頻,詳細說明這意味着什麼以及如何保護你的數據庫。你必須清理你的代碼。 運氣最好,

耶利米