2015-07-28 33 views
-1

請幫我修復此代碼 即時通訊設法用不正確的用戶名或密碼將顯示 如果我把錯誤的數據... 這個代碼可以顯示,如果我把正確的數據。如何解決用不正確的用戶名或密碼顯示Php?

它會顯示

成功!

但如果我把錯誤沒有任何反應。

<?php 

if (isset($_POST["submit"])): 

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

    $con = mysql_connect('localhost', 'root', ''); 
    mysql_select_db('login') or die ("cannot select DB"); 

    $query = mysql_query("SELECT * FROM userdata WHERE username='" . $user . "' AND password='" . $pass . "'"); 
    $numrows = mysql_num_rows($query); 

    if ($numrows != 0) { 
     while ($row = mysql_fetch_assoc($query)) { 
      $dbusername = $row['username']; 
      $dbpassword = $row['password']; 
     } 

     if ($user == $dbusername && $pass == $dbpassword) { 
      echo '<b>Success!</b>'; 
     } else { 
      echo ' incorrect Username or Password '; 
     } 

    } 

endif; 

?> 
+2

如果我用這個作爲我的密碼:'test「或」a「=」a'會怎麼樣?無論使用哪個用戶名,它都會接受它。換句話說:你的腳本對SQL注入是開放的!請更新它'MySQLi()'或'PDO()'並使用Prepared Statements。 – icecub

回答

1

你可以做幾行。

$query = mysql_query("SELECT userId FROM userdata WHERE username='".$user."' AND password='".$pass."'"); 


//$numrows=mysql_num_rows($query); 
if(mysql_num_rows($query) == 1) 
{ 
    echo "success"; 
} 
else 
    echo "Error"; 

如果用戶名爲&密碼不匹配查詢將返回0行。

看到這篇文章:How can I prevent SQL injection in PHP?

+0

謝謝你這個答案它的工作正常.. 我把我的代碼改成這個.. thnx:3 –

0

這是因爲你寫的內部 的條件,如果(!$ = numRows行0){ .... }

還有一件事,你總是會由選擇查詢返回一行,因爲用戶名應該對每個用戶都是唯一的。所以,不需要while循環。

當輸入錯誤的輸入時,您沒有收到任何內容,因爲select查詢沒有返回任何內容。因此,整個if($ numrows!= 0){...}被跳過。

<?php 
    if(isset($_POST["submit"])): 

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

     $con=mysql_connect('localhost', 'root', ''); 
     mysql_select_db('login') or die ("cannot select DB"); 

     $query=mysql_query("SELECT username, password FROM userdata WHERE username='".$user."' AND password='".$pass."'"); 
     $numrows=mysql_num_rows($query); 

     if($numrows!=0) 
     { 
     $dbusername=$row['username']; 
     $dbpassword=$row['password']; 
     } 

     if($user == $dbusername && $pass == $dbpassword) 
     { 
      echo'<b>Success!</b>'; 
     } 
     else 
     { 
      echo' incorrect Username or Password '; 
     } 
    endif; 

    ?> 
+0

它的錯誤。 。 。現在我甚至不能顯示成功.. 但謝謝你的答案。 :) –

相關問題