我有3页: success.html , login.php , checklogin.php 。我还创建了一个名为userInfo的mysql数据库表。表“userInfo由3位用户组成: David,Jane,Richard 。当我使用userInfo中的用户 David 输入用户名和密码时,它会直接指向success.html及其会说“登录成功”。但是当我输入Mary作为我的用户名并且输入我的密码时,它没有显示消息“无效的用户名和密码”。正确的输出应该在我的浏览器上显示消息,因为用户Mary userInfo中不存在。但我不知道如何解决问题。
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:
<input type="text" name="uname">
<br/>
<br/>
Password:
<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&amp; pw = mary”
我的输出:
click output&lt; ---当用户名和密码不是从userInfo mysql数据库创建时,不显示无效消息
答案 0 :(得分:0)
好吧,在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应该有来自指定资源的请求,然后当身份验证失败时它将传递回登录页面,它应该是这样的&#34; ../ login.php?uname = Mary&amp; pw =玛丽&#34; 强>
为此,您必须使用此重定向:
header("Location: login.php?uname=" . $u . "&pw=" . $p);
并在login.php
:
if(isset($_GET['uname']) && isset($_GET['pw']))
{
echo "Invalid Username and Password";
}
但请记住从$_GET
发送密码,甚至是错误的密码永远都不是一个好主意。