簡體   English   中英

如何使用PHP檢查數據庫中是否存在用戶

[英]How to check if user exists in database using PHP

解決方案:SQL查詢后的末尾“放在錯誤的位置。並且在SQL查詢之前也聲明了$ user和$ password。同樣,謝謝。

我正在努力弄清為什么這行不通。 對我來說,這是完全合理的。

另外,我確實知道我的代碼可能使用的是舊技術,並且有注入風險,這僅是概念證明。

這是我的代碼:

<?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");
}

?>

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

這是語法錯誤:

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

您的意思是:

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

另外,您在哪里定義$pass 如果您沒有定義它,那么SQL查詢可能只是在尋找一個可能與任何記錄都不匹配的空字符串(我希望如此)。


當查詢失敗時,系統不一定會直接告訴您。 (盡管在這種情況下, mysql_num_rows($result) 很可能引發錯誤。打開錯誤報告,檢查日志等。)看一下mysql_error()函數,以便在mysql_query()返回false時檢查錯誤(發生錯誤時執行的操作)。


而且,是的,在此處插入標准免責聲明,表示您正在使用嚴重過時的庫,並且對SQL注入開放

我不確定,但是我認為您的SQL命令中的$ pass變量未定義。

不要使用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**

解決方案:SQL查詢后的末尾“放在錯誤的位置。並且在SQL查詢之前也聲明了$ user和$ password。同樣,謝謝。

使用類似的查詢

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

不過,這是非常不安全的,請在使用此類查詢之前清除數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM