PHP会话无法从一页工作到另一页


PHP session does not work from page to page

要登录,我使用:

<?php
session_start();
if($_POST){
$csUSER='USERNAME';
$csPASS='PASSWORD';
$user=$_POST['user'];
$pass=$_POST['pass'];
if ($user==$csUSER) {
    if ($pass==$csPASS){
        $_SESSION['cdb']="1";
        header("Location: /");
        exit;
    } else {
        $passerror='<span class="errormsg">Wrong Password.</span>';
    } // END IF PASSWORD
} else {
$usererror='<span class="errormsg">Wrong Username.</span>';
} // END IF USERNAME
} // END IF $_POST
?>

允许我自己在每页(包括在所有页面[页面顶部]中)执行管理任务:

<?php
session_start();
if(isset($_SESSION['cdb'])){  
$loggedn="WORD";
}
?>

这使我可以:

<?php
if ($loggedn=="WORD") { WHATEVER }
?>

为了确保我登录时只能访问后端页面(包括在所有后端页面中):

<?php
// backend login check
if($loggedn!="WORD") {
header("Location: /"); // if not logged in, go to homepage
exit;
}
?>

问题是,它在我的电脑上运行得很好,但我有另一台我妻子用来整理数据的电脑,而且它不能在她的电脑上登录。我们都使用带有FF的Linux(Fedora)。我已经在每一页上都写了一行代码,救命!

需要检查的几件事:

  1. 确保你从头开始。清除浏览器中的缓存和cookie,以确保不会打开旧会话
  2. 确保会话数据存储在新机器上。会话数据通常存储在/tmp中
  3. 确保没有执行与会话相关的客户端特定代码

重定向到另一个页面后,调用exit函数,否则无论如何都会执行以下代码,这可能会导致奇怪的行为。

if($loggedn != "WORD")
{
  // redirect to login page
  header("Location: login.php");
  exit;
}
// the following code will be executed if exit is not called
...