在前面一个页面我设置了COOKIE
在后面一个页面的时候可以把它取出来
但是等我要在首页取COOKIE的时候却取不出来。。
这是为什么?难道COOKIE只对后面那个页面有效果,对前面的页面没有用?
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
$uid = 'xtddddd';
setcookie("student_id",$uid,time()+900);
header("location:index.php")
?>
运行截图:
这种方法我也没问题,你试试在一个页面(A)setCookie,自动跳转到另一个页面(B)输出值,然后手动跳转到其他页面(C),看看C页面能不能获取到COOKIE了
本回答被提问者和网友采纳一般的做法是:首页检测有没有登陆,没有登陆跳转到登陆页面,登陆后设置cookie,然后跳转到首页……追问
没有过期。我检查有没有登陆就是isset($_COOKIE),我这个登录系统的做法是:首页检测是否登陆,登陆了显示用户名,否则显示“同学”。在登陆界面输入信息,跳转到检测页比较数据库,没问题则设置COOKIE,时限为900秒,并跳转到登陆成功的页面,但是在我返回首页的时候就检测不到COOKIE了,所以就输出了“同学”,在我再次进入登陆界面时就直接跳到了成功页面,这我有点纳闷了。
追答你检测登陆需要这么弄:
isset($_COOKIE['student_id']);$_COOKIE是全局变量,你isset($_COOKIE) 这个判断永远是true……
。。。我只是在这里想偷懒所以把中括号的东西给省了,在网页里这个我是打全了的,不过我用的是双引号,跟引号应该没什么关系吧。。。
追答没关系,你如果用的是google浏览器,可以打开开发者工具,查看一下! 还有,你没有跨域吧?跨域是取不到cookie的……
追问360安全浏览器,我的计算机没有加入域,是在工作组的模式下进行的
追答…… 我指的跨域是 域名是一样的吧,首页和你设置cookie的域名是一样的吧?
你可以打开开发者工具看下,请求页面的时候有没有cookie:
在登录成功的页面是有COOKIE的
但是跑到首页就没有COOKIE了。。。
360浏览器…… 换个浏览器试试……