2016-03-03 162 views
-1

解決方案:「在SQL查詢出錯的地方結束」,並且還在SQL查詢幫助之前聲明$ user和$ password 謝謝大家。如何使用PHP檢查用戶是否存在於數據庫中

我竭力要弄清楚爲什麼這是行不通的。對我來說,完全合理。

而且,我知道我的代碼可以使用舊技術,並在注射的風險,這僅僅是一個概念證明

這裏是我的代碼:

<?php 
$db = mysql_connect("localhost", "root", "root"); 
if (!$db) { 
die("Database connect failed: " . mysql_error()); 
} 

$db_select = mysql_select_db("test", $db); 
if (!$db_select) { 
die("Database selection failed: " . mysql_error()); 
} 

$username = $_POST['username']; 

$result=mysql_query("SELECT * FROM Dbusers (username,pass) WHERE username,pass ='$username','$pass'"); 
if(mysql_num_rows($result) == 1) { 

     header ("location: UniHelpindex.php"); 
} 
else 
{ 
    echo ("Login Details Wrong"); 
} 

?> 

任何事情,我的幫助讓我知道。

+0

會發生什麼?是否有錯誤消息? –

+0

它通過我的if語句和回聲登錄詳細信息是錯誤的。 –

+0

添加語句'ini_set('display_errors','1'); ini_set('html_errors','1'); error_reporting(E_ALL);'到你的代碼的開頭,再次運行它,並檢查服務器的'error.log'文件 –

回答

3

這是一個語法錯誤:

WHERE username,pass ='$username','$pass' 

您的意思是:

WHERE username = '$username' AND pass = '$pass' 

而且,當你有沒有定義$pass?如果你沒有定義它,那麼SQL查詢可能只是查找可能不匹配任何記錄的空字符串(我希望)。


當查詢失敗時,系統不一定會告訴你。 (儘管在這種情況下mysql_num_rows($result)很有可能是發生錯誤。打開錯誤報告,檢查您的日誌等)看看mysql_error()函數以隨時檢查錯誤mysql_query()返回false(它在事件中執行的錯誤)。


而且,是的,在這裏插入標準的免責聲明,您使用遠遠過時的庫和敞開 SQL注入。

+0

如果你按照@David的步驟,並使這個 到$ db = mysql_query(「SELECT * FROM Dbusers(username,pass)WHERE username,pass ='$ username','$ pass'」);' 成爲這個: '$ result = mysql_query(「SELECT * FROM Dbusers WHERE username ='$ username'AND pass ='$ pass'」);' 確定你的代碼應該可以工作 –

+0

是的,我做了改變,它似乎正在檢查,但它好像忽略了我的第一條IF語句被重定向到其他頁面位置。 –

+0

@JamesTaylor:具體*如何失敗?你得到一個完全空白的迴應? 「else」塊中的消息?錯誤? 「就好像它忽視了我的第一次IF聲明」並不真正描述問題。 – David

0

我不確定,但我想你的SQL命令中的$ pass變量是未定義的。

-1

使用像

SELECT pass from Dbusers WHERE username = '$username' LIMIT 1

這是非常不安全的,雖然,請使用這樣的查詢前清理數據的查詢。

+0

我很確定代碼的意圖是驗證用戶的登錄憑證。這種方法甚至不會驗證密碼,它只會讓任何知道用戶名的人登錄。所以,是的,這就像你說的「***非常不安全***」。那麼,爲什麼推薦它? – David

+0

使用從查詢中收到的數據比較密碼。 – SunMan

0

不使用mysql_它折舊。改用mysqli_

$db=mysqli_connect('hostname','usrname','password','dbname')or die(<h2>some html code for showing the error</h2>); 
$query="SELECT * FROM Dbusers WHERE username='$username' AND password='$password'"; 
$result=mysqli_query($db,$query); 
if($mysqli_num_rows !=0){ 
//user was found stuff here 
}else{ 
//user not found stuff here 
} 
**I hope it helped** 
0

SOLUTION:。在結束「的SQL查詢是在錯誤的地點後,也宣告了$ USER和$密碼之前的SQL查詢幫助以及感謝所有

相關問題