繁体   English   中英

使用mysql登录“无效的用户名和密码”

[英]Php login “Invalid username and password” using mysql

我有3页: success.htmllogin.phpchecklogin.php 我还创建了一个名为userInfo的mysql数据库表。 表“userInfo由3个用户组成: David,Jane,Richard 。当我使用来自userInfo的用户David输入用户名和密码时,它会指向success.html,它会说”登录成功“。但是当我为我输入Mary时用户名和mary为我的密码,它没有显示消息“无效的用户名和密码”。正确的输出应该在我的浏览器上显示消息,因为userInfo中不存在用户Mary。但我不知道如何解决问题。

Mysql数据库“userInfo”:

显示数据库

Success.html:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Login Success Page - 156020K</title>
</head>

<body>
Login Success!!
</body>
</html>

Login.php:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Login</title>
</head>

<body>

<?php
    $url="http://localhost/156020K/Lab5?link=login.php";

    if(isset($_GET['link']))
    {
        echo "Invalid Username and Password";
    }
?>


<form action="checklogin.php" method="post">
    Username: &nbsp;
    <input type="text" name="uname">

    <br/>
    <br/>

    Password: &nbsp;
    <input type="password" name="pw">

    <br />
    <br />

    <input type="submit" value="Login">

</form>



</body>
</html>

Checklogin.php:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Check login</title>
</head>

<body>
<?php


  if(isset($_POST["uname"])) 
  {
      $u=$_POST['uname'];
      $p=$_POST['pw'];

      $conn=mysqli_connect("localhost", "root", "" , "db156020K");
      $sql = "SELECT * FROM userInfo WHERE name='" .$u. "' AND pass='" .$p. "' ";
      $search_result=mysqli_query($conn, $sql);

      $userfound=mysqli_num_rows($search_result);


      if($userfound >= 1)
      {
          header("Location: success.html");
      }
      else
      {
          header("Location: login.php");
      }


  }

  mysqli_close($conn);

 ?>



</body>
</html>

并且url应该具有来自指定资源的请求,然后当身份验证失败时它将传递回登录页面,它应该是这样的“../login.php?uname=Mary&pw=mary”

我的输出:

单击输出 <---如果用户名和密码未从userInfo mysql数据库创建,则不显示无效消息

那么,在你的login.php文件中,你使用:

if(isset($_GET['link']))
{
    echo "Invalid Username and Password";
}

回显错误消息,但在checklogin.php文件中,您使用:

header("Location: login.php");

如果登录失败,则重定向。

这里没有$_GET参数,因此您的错误消息永远不会显示。 尝试这样的重定向:

header("Location: login.php?link=whatever");

编辑:刚看到这个:

并且url应该具有来自指定资源的请求,然后当身份验证失败时它将传递回登录页面,它应该是这样的“../login.php?uname=Mary&pw=mary”

为此,您必须使用此重定向:

header("Location: login.php?uname=" . $u . "&pw=" . $p);

并在login.php检查这些参数:

if(isset($_GET['uname']) && isset($_GET['pw']))
{
    echo "Invalid Username and Password";
}

但请记住,通过$_GET发送密码,即使是错误的密码也不是一个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM