PHP不检测Javascript设置的cookie


PHP not detecting cookie set by Javascript

编辑:我的错,这是一个(服务器端)缓存问题。

我有一个网站,当访问时首先检查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");