2013-08-28 104 views
2

林在PHP中首發,我的問題是,像我的表單字段已經充滿了root,密碼甚至無需輸入任何東西......請幫助...表單字段已填入

<?php 
    $host="localhost"; 
    $user="root"; 
    $pass="****"; 
    $db="test123"; 
    mysqli_connect($host,$user,$pass); 
    mysqli_select_db($db); 
    if(isset($_POST['username'])); 
    { 
     $username=$_POST['usern']; 
     $password=$_POST['passw']; 
     $qry="SELECT * FROM users WHERE name='".$username."' 
      AND password='".$password."' LIMIT 1 "; 
     $res=mysql_query($qry); 
     if(mysqli_stmt_num_rows($res)==1) 
     { 
      echo"You have successfully logged in"; 
      exit(); 
      } 
      else{ 
      echo"invalid login information"; 
      exit(); 
      } 
        } 
    ?> 

<!doctype html> 
<html> 

    <head> 
     <title>Untitled Document</title> 
    </head> 

    <body> 
     <form method="post" action="login.php">Username: 
      <input type="text" name="usern"> 
      <br /> 
      <br />Password: 
      <input type="password" name="passw"> 
      <br /> 
      <br /> 
      <input type="submit" value="Log In" /> 
     </form> 
    </body> 

</html> 

................................................ ..........

OP: 用戶名:root密碼 :*

+0

創建三個變量$ username,$ password和$ qry是不必要的。你可以在一行中做到這一點,而不會讓它陷入混亂。使用mysql_ *函數很快就不再支持,應該避免。你使用它的方式是一個巨大的安全風險,因爲你很容易受到SQL注入的影響。關於原始問題,請嘗試使用其他瀏覽器,您可能會緩存一些表單字段。 – JimL

+0

您是否偶然在登錄後保存在瀏覽器中? – cptnk

+0

它只是一個瀏覽器功能,在登錄時你是否保存密碼?如果是的話,它不是一個問題,如果不是,清除瀏覽器歷史記錄,緩存,那麼它會適合你。 –

回答

7

禁用表單和密碼存儲的提示和防止在會話歷史記錄被緩存的表單數據的最簡單,最簡單的方法是使用自動完成表單元素與價值off屬性:

Username: <input type="text" name="usern" autocomplete="off"><br /><br /> 
Password: <input type="password" name="passw" autocomplete="off"><br /><br /> 

這是另一種方式來完成同樣的事情,但它禁用所有投入要素自動完成,也不能在所有的瀏覽器:

<form method="post" action="login.php" autocomplete="off"> 
... 
</form> 
+0

雖然這在技術上有效,但從用戶體驗的角度來看,故意停止用戶習慣使用的功能是不太好的。 – Anigel

+0

哇..感謝很多 –

+1

馬克答案是正確的,如果它有幫助。 – Ikong

1

問題與您的用戶名場

if(isset($_POST['username'])); 

更改爲

if(isset($_POST['usern'])); 

它永遠不會if條件裏面去。