简单的页面密码保护:我做错了什么


Simple password protecting of a page: What am I doing wrong here?

对于我的测试环境站点,我希望任何查看它的人都必须在每个会话中键入一次密码。当他们的会话开始时,他们输入密码,然后被重定向到他们试图查看的页面。所以我在每一页的顶部都有

// For test site, require login
if ( !$_SESSION['loggedIn'] )
{
    $pagetarget = $_SERVER['REQUEST_URI'];
    include "test_login.php";
    die();
}

则CCD_ 1为

<?php 
    if ( $_POST['password'] == '091u233j12j3' )
    {  
       $_SESSION['loggedIn'] = true;
       header("Location: " . $pagetarget);
       die();
    }
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Test Environment Login</title>
</head>
<body>
    <form method="POST">
        <p>Enter password to unlock <b>test.mysite.com</b>: <input type="text" name="password" /><input type="submit" /></p>
        <p>You will be redirected to the page you tried to access.</p>
        <input type="hidden" name="pagetarget" value="<?php echo $pagetarget; ?>" />
    </form>
</body>
</html>

但是页面重定向不起作用。我做错了什么?

在每个脚本的开头都需要调用session_start(),然后才能使用$_SESSION

示例:

session_start();
if ( !$_SESSION['loggedIn'] )
{
    $pagetarget = $_SERVER['REQUEST_URI'];
    include "test_login.php";
    die();
}

试试这个:

// For test site, require login
session_start(); 
if ( !$_SESSION['loggedIn'] )
{
    $pagetarget = $_SERVER['REQUEST_URI'];
    include "test_login.php";
    die();
}

test_login.php

<?php 
if ( $_POST['password'] == '091u233j12j3' )
{  
   $_SESSION['loggedIn'] = true;
   header("Location: " . $_POST['$pagetarget']);
   die();
}
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
(...)