php isset cookie问题

时间:2013-02-27 09:05:56

标签: php cookies setcookie

简短:由于某种原因,cookie' _sid'没有被某些浏览器/计算机检索。 Long:我有3个文件我正在使用。 /index.php,/scripts/login.php和/iframes/register.php。 现在,当输入登录信息时,会发生一系列标准内容,并且用户已登录。名为' _sid'设置,值存储在mySQL表中。

的login.php:

setcookie("_sid", $sid, 0, '/'); ?>

现在所有计算机都获得了这个cookie - 我已经测试了超过15个,全部通过了。只是想告诉你我是如何设置cookie的。

问题在于index.php:

<?php
$username="x"; $password="y"; $database="z";
mysql_connect(localhost,$username,$password);

@mysql_select_db($database) or die( "Unable to select database");
$loggedin=false; $team="none";
if(isset($_COOKIE['_sid'])){  //error happens here
    print_r("test");
    $session_id=$_COOKIE['_sid'];

现在注释行发生错误。 isset返回false。现在通常这将是某种有用的指标。然而...

第三个文件register.php为用户提供了注册其他人(不相关)的能力。需要注意的重要一点是文件的开头与index.php完全相同。

<?php
$username="x"; $password="y"; $database="z";
mysql_connect(localhost,$username,$password);

@mysql_select_db($database) or die( "Unable to select database");
$loggedin=false; $team="none";
if(isset($_COOKIE['_sid'])){
    print_r("test");
    $session_id=$_COOKIE['_sid'];

然而,此文件可以。没错,isset有效。此文件也适用于所有15/15计算机。

现在只是为了让这更令人困惑,index.php适用于15台计算机中的大约10台。错误总是发生在mac(chrome,ff,safari)和Linux上(经过测试,但也可以假设使用chrome)。它适用于大多数窗口(7 + 8使用chrome,ff)。但是,当使用相同的双台计算机(在幻影操作系统上)时,一台计算机工作,另一台计算机失败(使用ff)。

我现在已经解决了这个问题2天了,真的不知道该怎么做......

1 个答案:

答案 0 :(得分:0)

当您设置Cookie时,浏览器会将新请求的标头添加到同一个域中。

您必须验证浏览器是否已在index.php之前调用login.php,而不是在同一请求中调用。

  1. login.php - 浏览器不发送cookie,但接收设置它的请求
  2. index.php - 浏览器发送cookie
  3. 如果你的index.php中有

    <include "login.php">
    

    这肯定不起作用。

相关问题