检查会话和cookie无法在PHP中工作

时间:2010-07-27 15:37:05

标签: php session cookies

我有这段代码,确保您已登录,然后通过检查登录时设置的cookie确保您在正确的页面上。此代码在登录脚本下面的目录中的页面上工作,但是在下面的目录中的页面中,它总是需要您访问。有什么想法吗?

<?php

session_start();

if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) {
    header("location: http://mywebsite.com/member/accessdenied.html");
    exit();
}


 $_COOKIE["verify"] = $verify;
 if( $verify != file_get_contents("name.txt")) { 
  header("location: http://mywebsite.com/member/accessdenied.html");
 } else {  }

 ?>

它似乎只是底部,检查cookie的部分,不起作用。再一次,任何想法?

4 个答案:

答案 0 :(得分:4)

我认为您的Cookie分配向后:

$_COOKIE["verify"] = $verify;

应该是

$verify = $_COOKIE["verify"];

那应该是:

$verify = isset($_COOKIE["verify"])?$_COOKIE["verify"]:false;

好像之前没有设置过cookie一样,它会发出通知错误。

答案 1 :(得分:1)

<?php

 $verify = $_COOKIE["verify"];

 if( $verify == file_get_contents("name.txt")) { 
     echo $verify . 'is equal to the content of name.txt'
 } else {  
     echo $verify . 'is NOT equal to the content of name.txt'
 }

 ?>

尝试用此调试代码。查看变量的内容是否符合您的要求。但我发现变量是一个文件是不寻常的。

答案 2 :(得分:0)

您确定始终从file_get_contents获取内容吗?我可以想象它在一个目录中找到但在另一个目录中找不到!

答案 3 :(得分:0)

其他想法:可以将Cookie设置为仅与特定目录相关。我只是意识到,我们在这里缺少的是你首先设置cookie的部分。