当我登录时,我应该被重定向到另一个名为“control_panel.php”的页面,但事情就是当我刷新时,我再次被重定向回“login.php”页面。
login.php页面:
<?php
session_start();
$username = "admin";
$pw = "pixels2020";
//CHECKS FOR THE RIGHT USERNAME AND PW.
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($_POST['username'] == $username && $_POST['pw'] == $pw) {
$_SESSION['login'] = "logged_in";
// header("Location:http://localhost/Task11/control_panel.php");
} else
$msg = "Wrong Username or Password.";
}
//SET SESSION VARIABLE TO logged_in
if (isset($_SESSION['login'])) {
$_SESSION['login'] = "logged_in";
echo $_SESSION['login'];
header("Location:http://localhost/Task11/control_panel.php");
}
?>
control_panel.php:
<?php
session_start();
if ($_SESSION['login'] !== 'logged_in')
header("Location:http://localhost/Task11/login.php");
?>
//Some php code
//Some html code
提前致谢!
答案 0 :(得分:0)
我不知道这是否只是一个错字,但你在{
声明之后忘记了else
。
为什么要设置$_SESSION['login']
两次?您可以在验证结果为肯定后设置$_SESSION['login'] = "logged_in"
。
<强>的login.php 强>
<?php
session_start();
$username = "admin";
$pw = "pixels2020";
//CHECKS FOR THE RIGHT USERNAME AND PW.
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($_POST['username'] == $username && $_POST['pw'] == $pw) {
// Handle the $_SESSION and redirect just here, after verification
$_SESSION['login'] = "logged_in";
header("Location:http://localhost/Task11/control_panel.php");
} else {
$msg = "Wrong Username or Password.";
}
?>
<强> control_panel.php:强>
<?php
session_start();
if ($_SESSION['login'] !== 'logged_in') {
header("Location:http://localhost/Task11/login.php");
}
?>
这样现在应该有错误。如果仍然出现错误,则另一个脚本文件中的某处可能存在错误。
答案 1 :(得分:0)
我发现它们,这是一个小错误。 我使用另一个操作(到登录页面)创建了另一个按钮,其中onclick属性设置为
onnclick=“<?phpp destroy_session() ?>”
以及如何在不点击按钮的情况下执行该声明。如果可以,请解释原因。