【问题标题】:Check session and cookie not working in PHP检查会话和 cookie 在 PHP 中不起作用
【发布时间】:2010-07-27 15:37:04
【问题描述】:

我有这段代码可以确保您已登录,然后通过检查登录时设置的 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 的部分不起作用。再说一遍,有什么想法吗?

【问题讨论】:

  • $verify 是从哪里来的?那行不应该是 $verify = $_COOKIE["verify"] 吗?

标签: php session cookies


【解决方案1】:

我认为你的 cookie 分配是倒退的:

$_COOKIE["verify"] = $verify;

应该是

$verify = $_COOKIE["verify"];

那应该是:

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

好像之前没有设置cookie一样,好吧它会提示错误。

【讨论】:

  • 我试过了,但还是拒绝访问,我检查了登录时设置的cookie。
  • 那我会尝试一些调试方法。 IE:回显文件并回显 cookie,确保它们相同等。并确保正确填充预期结果。
【解决方案2】:
<?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'
 }

 ?>

尝试用这个来调试代码。看看你的变量的内容是不是你想要的。但我发现一个变量会是一个文件是不寻常的。

【讨论】:

    【解决方案3】:

    你确定你总是从 file_get_contents 获取内容吗?我可以想象它在一个目录中找到,但在另一个目录中没有!

    【讨论】:

    • 是的,两个目录中都有 name.txt 的副本,不过感谢您的帮助。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多