php COOKIE为什么取不出值?

在前面一个页面我设置了COOKIE

在后面一个页面的时候可以把它取出来

但是等我要在首页取COOKIE的时候却取不出来。。

这是为什么?难道COOKIE只对后面那个页面有效果,对前面的页面没有用?

第1个回答  2015-03-09
$_COOKIE 是个全局变量数组,对于变量来说,只有设置了才会有值,也就是说你首页的调用,要基于2个条件:

1、设置了 student_id

2、设置的 cookie ,在你读取时,没有超出其生存期间。追问

还得设置student_id?这个怎么设置?这个不是COOKIE的名字吗?用这个来取COOKIE的值呀,我在成功页面也没设置student_id啊,但就是有显示相应的值,同样的方法在首页就不行

追答

就是你上面的setcookie代码啊。setcookie 就是在 $_COOKIE 全局数组中添加一个数组成员。


isset($_COOKIE) 不知道是不是你写的全部代码,通常应该是

 isset($_COOKIE['student_id'])

追问

除了引号,其他的我都是这样写的呀。。。

追答

单、双引号没有区别。但通常字符串无运算时建议使用单引号。


本人编写了测试代码是没问题的:


文件1:index.php


你好
<?php
  header("Content-type:text/html;charset=utf-8");
  date_default_timezone_set('PRC');
  
  if(isset($_COOKIE['student_id']))
    echo "<span class='student_id'>" . $_COOKIE['student_id'] . '</span>';
  else
  {
    echo "同学<p>";
    echo '<a href="test.php">登录</a>';    
  }
?>

文件2:test.php


<?php
  $uid = 'xtddddd';
  setcookie("student_id",$uid,time()+900);
  header("location:index.php")
?>


运行截图:


追问

这种方法我也没问题,你试试在一个页面(A)setCookie,自动跳转到另一个页面(B)输出值,然后手动跳转到其他页面(C),看看C页面能不能获取到COOKIE了

本回答被提问者和网友采纳
第2个回答  2015-03-09
你设置的cookie生命周期只有 900s,过期了吧?还有,你在什么地方设置的cookie呢?
一般的做法是:首页检测有没有登陆,没有登陆跳转到登陆页面,登陆后设置cookie,然后跳转到首页……追问

没有过期。我检查有没有登陆就是isset($_COOKIE),我这个登录系统的做法是:首页检测是否登陆,登陆了显示用户名,否则显示“同学”。在登陆界面输入信息,跳转到检测页比较数据库,没问题则设置COOKIE,时限为900秒,并跳转到登陆成功的页面,但是在我返回首页的时候就检测不到COOKIE了,所以就输出了“同学”,在我再次进入登陆界面时就直接跳到了成功页面,这我有点纳闷了。

追答

你检测登陆需要这么弄:

isset($_COOKIE['student_id']);

$_COOKIE是全局变量,你isset($_COOKIE) 这个判断永远是true…… 

追问

。。。我只是在这里想偷懒所以把中括号的东西给省了,在网页里这个我是打全了的,不过我用的是双引号,跟引号应该没什么关系吧。。。

追答

没关系,你如果用的是google浏览器,可以打开开发者工具,查看一下! 还有,你没有跨域吧?跨域是取不到cookie的……

追问

360安全浏览器,我的计算机没有加入域,是在工作组的模式下进行的

追答

…… 我指的跨域是 域名是一样的吧,首页和你设置cookie的域名是一样的吧?

你可以打开开发者工具看下,请求页面的时候有没有cookie:

追问

在登录成功的页面是有COOKIE的

但是跑到首页就没有COOKIE了。。。

追答

360浏览器…… 换个浏览器试试……

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网