PHP会话在页面之间不起作用

时间:2011-06-14 19:14:30

标签: php session login

要登录我使用:

<?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;
}
?>

问题是,它在我的电脑上工作得很完美,但我有另一台电脑,我的妻子用于数据整理,它不会保持登录她的电脑。我们都使用Linux(Fedora)和FF。我在每个页面都有过一行代码,帮助!

2 个答案:

答案 0 :(得分:1)

要检查的一些事项:

  1. 确保您从干净的石板开始。清除浏览器中的缓存和Cookie,以确保您没有打开旧会话。
  2. 确保会话数据存储在新计算机上。会话数据通常存储在/ tmp
  3. 确保没有与会话相关的特定于客户端的代码。

答案 1 :(得分:0)

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

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