使用mysql验证在php中登录表单

时间:2016-03-29 18:00:27

标签: php mysql mysqli

当我输入正确的密码和用户名时,我的代码进入了else语句。当我输入错误的用户名和密码时,它也会转到else语句。这段代码我做错了什么?我在Windows操作系统中使用较新版本的wamp服务器软件。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "php";
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn)
{
    die("Connection failed: " . mysqli_connect_error());
}
$login=$_POST['username'];
$passwd=$_POST['passwd'];
if($username!=''&&$passwd!='')
{
    $query="select * from users where login='".$username."' and passwd='".$passwd."'" or die("Connection failed: " . mysqli_connect_error());
    $res=mysqli_fetch_row($query);
    if($res)
    {
        $_SESSION['username']=$login;
        echo "welcome to php";
    }
    else
    {
        echo'You entered username or password is incorrect';
    }
}
else
{
    echo'Enter both username and password';
}

?>
<html>
  <body>
    <form action="login3.php" method="post">
      Username:<br>
      <input type="text" name="username"><br>
      Password:<br>
      <input type="PASSWORD" name="passwd">
      <BR>
      <intput type="submit" value="login" name="submit"><INPUT Type="submit  "value="reset">
    </form> 
  </body>
</html>

2 个答案:

答案 0 :(得分:2)

首先,您的代码中存在许多错误的内容,请参阅@David评论。我认为你没有解雇查询。以下是要修改的代码:

if($login!=''&& $passwd!='')
{
 $query="select * from users where login='".$login."' and passwd='".$passwd."'";

 $result=mysqli_query($conn,$query); 

 if(!$result)
    die("Query Failed: " .  mysqli_error($conn));
 else{
     if(mysqli_num_rows($result)>0)
     {
        $_SESSION['username']=$login;
        echo "welcome to php";
     }
    else
    {
       echo'You entered username or password is incorrect';
     }
 }
}

答案 1 :(得分:0)

您目前正在尝试使用您的数据库用户名(root)而不是来自POST的用户名登录。

这是你的错误:

function __construct($dbHost,$dbUsername,$dbPassword,$dbName)

应该是:

if($username!=''&&$passwd!='')