2016-07-21 21 views
-5

這是一個登錄頁面。它返回0,即使在用戶和傳球是正確mysqli_num_rows()即使用戶正確,alwayes返回0

session_start(); 
$conn = mysqli_connect('localhost','root','','script'); 

if (isset($_POST['sub'])) { 
    $user = $_POST['user']; 
    $pass = $_POST['pass']; 

    $result = mysqli_query($conn,'SELECT * FROM admin WHERE username = "$user" AND password = "$pass"'); 
    echo mysqli_num_rows($result); 

} 
?> 

`

+1

** **危險:你是**易受[SQL注入攻擊(http://bobby-tables.com/)**,你需要[保衛](http://stackoverflow.com/問題/ 60174/best-way-to-prevent-sql -injection-in-php)自己從。 – Quentin

+1

**危險**:「完全不哈希」是[不適合的哈希算法](http://php.net/manual/en/faq.passwords.php);你需要[更好地照顧](https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet)用戶的密碼。 – Quentin

+0

zeko30 - 不知道你的問題是什麼(也許你查詢了錯誤的數據庫或表?),但......即使@昆汀的評論並不有助於解決您的眼前來看問題,你應該* *密切注意他們不過。 –

回答

-1

此代碼應工作:

session_start(); 
$conn = mysqli_connect('localhost','root','','script'); 

if (isset($_POST['sub'])) { 

    $user = $_POST['user']; 
    $pass = $_POST['pass']; 

$result = mysqli_query($conn,"SELECT * FROM admin WHERE username = '$user' AND password = '$pass'"); 
echo mysqli_num_rows($result); 
} 
?> 

只要改變行情。

+0

OMG謝謝你= D – zeko30

1

在PHP中,與'字符分隔不插變量字符串。

您正在查找用戶$用戶,而不是用戶調用存儲在$user變量中的任何東西。

快速破解是交換你的報價。正確的解決方案是使用prepared queries with placeholders

相關問題