大家帮小弟看看我这个PHP写的添加cookie有什么问题?
我在CI下做的一个网站,用cookie实现,在一分钟之内如果第二次或以上登录,不必转到登录画面,直接到欢迎画面,就和很多论坛的记录访问周期功能一样。其中欢迎画面的代码如下welcome.php
<?php
if( ! isset($_COOKIE["name"] )) { //第一次登录成功转到欢迎画面时,“name”cookie为空,所以以登录的username设cookie,时 间60秒
setcookie("name",$_POST["username"],time()+60);
}
?>
<html>
<body>
。。。
。。。
</body>
</html>
我60秒内再次访问主页Index.php,Index里判断cookie始终认为没有名为“name”的cookie。代码如下
index.php
<?php
class Index extends CI_Controller {
public function display() {
if( ! isset($_COOKIE['name'] )) { //始终走这个分支,所以还转到登录画面
if (!file_exists('application/views/login.php')) {
show_404();
}
$this->load->view('login');
}else { //正常应该走这个分支,到欢迎画面
if ( ! file_exists('application/views/welcome.php' )) {
show_404();
}
$this->load->view('welcome');
}
}
}
?>
经过调试,welcome.php里的setcookie没设上,代码有问题么?现在我是在CI框架下跑的。之前没用CI时,单独的PHP这个功能是好使的,cookie部分的代码直接移植过来,没改啊,高手指教,谢谢
自己顶,谁来帮忙看下 经过调试,发现setcookie没问题,setcookie后名为name的cookie已经进到$_COOKIE里了,但是当重新访问localhost/kidsland/index.php时,这个cookie就没了,好像被清空了。所以每次在index.php的display方法里判断 isset($_COOKIE['name'])时始终是没设置。问题是,为什么我在welcome.php里setcookie成功了,重新访问index.php页面该cookie就没了?cookie不是服务器发给浏览器保存起来的变量吗?在生命期内永远存于浏览器里啊?高手指教
ps:之前没用CI时,单独的几个php跑,此功能好用 设置cookie的时候没有指定路径属性。
参考关于cookie的一些事 yunnysunny 发表于 2012-10-13 08:40 static/image/common/back.gif
设置cookie的时候没有指定路径属性。
参考关于cookie的一些事
解决了,就是path的问题,我调整了两点,把setcookie从welcome画面放到wel控制器里,这样和index控制器的读取cookie都在controllers文件夹下,然后在setcookie的path里设成'/',让所有路径的cookie都能读到。谢谢大家 CI的COOKIE貌似有点问题
页:
[1]