简短:由于某种原因,某些浏览器/计算机未检索到 cookie '_sid'。Long:我正在使用 3 个文件。/index.php、/scripts/login.php 和 /iframes/register.php。现在,当输入登录信息时,会发生一堆标准的事情,并且用户已登录。设置了一个名为 '_sid' 的 cookie,并将值存储在 mySQL 表中。
登录.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(ff 测试,但也可以假设 chrome)。它适用于大多数窗口(7+8 使用 chrome,ff)。但是,当使用相同的双胞胎计算机(在虚拟操作系统上)时,一台计算机工作,另一台失败(使用 ff)。
我已经解决这个问题两天了,真的不知道该怎么办......