编辑:我的错,这是一个(服务器端)缓存问题。
我有一个网站,当访问时首先检查cookie"介绍",然后如果它不存在,将其重定向到介绍页面。
<?php if (!isset($_COOKIE["intro"])) {
header( 'Location: http://explainasterisk.com/intro/' ) ; } ?>
当用户点击介绍页上的"开始"按钮时,使用
设置cookie:<script type="text/javascript">
$(document).ready(function () {
$('.home').click(function () {
scroll(0, 0); //scrolltotop
var intro = "intro" //setting cookiename variable
var today = new Date();
var expire = new Date();
expire.setTime(today.getTime() + 3600000*24*365);
document.cookie = intro+"=1"
+ ";expires="+expire.toGMTString();
$('.home').slideUp(3000, function () { //slideUp function
//Nothing
});
});
});
</script>
在Opera和Chrome中,cookie是设置的,但是当我点击介绍页面上的跳过按钮(这将我带回到原始页面)时,我只是被重定向到介绍页面。你可以在这里看到:http://explainasterisk.com/
if (!isset($_cookie["intro"])) {
是不正确的数组名称。应该是大写的,像这样
if (!isset($_COOKIE["intro"])) {
参考:$ _COOKIE
谢谢Brad Christie。
问题的根源是您的代码开头没有error_reporting(E_ALL);
(而开发环境中没有ini_set('display_errors','On');
)。
如果您设置了$_cookie变量,PHP将显示错误信息,提示没有$_cookie变量
你可能想尝试一下jquery-cookie,因为它使得在javascript中设置和处理带有过期日期的cookie变得更加容易。
一行:
$.cookie("[cooke name]", "[value]", { expires: [time in days]);
例如:
$.cookie("intro", "set", { expires: 365);
你的PHP代码片段看起来很好,如果cookie设置正确-应该工作
尝试将路径和域名添加到cookie的末尾:
path=/; domain=.<?php echo $_SERVER['HTTP_HOST']; ?>
cookie在javascript中被设置为域名.explainasterisk.com
所以在阅读cookie之前先试试这个
ini_set("session.cookie_domain", ".explainasterisk.com");