PHP没有检测到Javascript设置的cookie

时间:2013-03-18 13:47:53

标签: php javascript cookies

编辑:我的不好,它是(服务器端)缓存问题。谢谢你的帮助。

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

5 个答案:

答案 0 :(得分:0)

if (!isset($_cookie["intro"])) {

是不正确的数组名称。它应该在CAPS中,就像这样

if (!isset($_COOKIE["intro"])) {

参考:$_COOKIE

感谢Brad Christie。

答案 1 :(得分:0)

问题的根源是您的代码开头没有error_reporting(E_ALL);(以及开发环境中的ini_set('display_errors','On');)。

如果你有,PHP会显示错误消息,表明没有$ _cookie变量。

答案 2 :(得分:0)

您可能想尝试jquery-cookie,因为它可以让javascript中的Cookie设置和处理过期更加容易。

一句简单的话:

$.cookie("[cooke name]", "[value]", { expires: [time in days]);

e.g:

$.cookie("intro", "set", { expires: 365);

您的PHP代码段对我来说很好看 - 如果Cookie设置正确 - 应该有效。

答案 3 :(得分:0)

尝试将路径和域添加到Cookie的末尾:

path=/; domain=.<?php echo $_SERVER['HTTP_HOST']; ?>

答案 4 :(得分:0)

javascript中的Cookie正在使用域.explainasterisk.com

进行设置

所以在阅读cookie之前先试试这个。

ini_set("session.cookie_domain", ".explainasterisk.com");