[英]Login system - header(Location:) won't redirect to restricted page
所以我正在尝试构建一个登录和注册系统,但是当提交登录表单时,除了“header(Location:restricted.php)”之外,所有 PHP 似乎都运行良好。 什么都没有发生,也没有出现错误,当我点击提交时,页面就会刷新。
这是登录页面的代码:
<?php
include("connection.php");
if (isset ($_POST["submit"]) ) {
$email = $_POST["email"];
$password = $_POST["password"];
$result = mysqli_query($conn, "
SELECT * FROM users WHERE email = '$email' AND password = '$password'
");
$row = $result->fetch_array(MYSQLI_BOTH);
session_start();
$_SESSION["UserID"] = $row["UserID"];
$_SESSION["first_name"] = $row["first_name"];
$_SESSION["last_name"] = $row["last_name"];
$_SESSION["email"] = $row["email"];
$_SESSION["username"] = $row["username"];
$_SESSION["password"] = $row["password"];
header('Location: restricted.php');
}
?>
<!DOCTYPE html>
<html>
<?php
$title = "Sign In";
$css = "";
include('../include/head.php');
?>
<body>
<h2>Log In</h2>
<!--LOGIN FORM-->
<form action="signin.php" method="POST">
Email <input type="text" name="email" /> <br />
Password <input type="password" name="password" />
<br /> <br />
<input type="submit" name="submit">
</form>
<a href="signup.php">Sign Up</a>
</body>
</html>
这是受限页面的代码:
<?php
session_start();
if ( isset($_SESSION["UserID"] ) ) {
} else {
header('Location: signin.php')
}
?><!DOCTYPE html>
<html>
<head>
<title>Restricted Page</title>
</head>
<body>
<p><?php echo 'Welcome ' . $_SESSION["first_name"]; ?></p>
</body>
</html>
任何帮助将不胜感激。
您在发送标头后忘记终止脚本,您还应该在标头中使用绝对路径,如 HTTP/1.1 所述
header("Location: http://example.com/restricted.php");
exit();
或者
exit(header("Location: http://example.com/restricted.php"));
Restricted.php 在第 6 行也需要同样的东西。
如前所述,使用 php 函数进行散列。
这是非常不安全的,您需要在将密码存储在数据库中之前对其进行哈希处理,这可以防止访问您的数据库的黑客看到它们,访问纯文本密码的管理员也很糟糕。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.