2013-08-28 59 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条件里面去。