0

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

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

4

5 回答 5

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

数组名称不正确。它应该是大写的,像这样

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

参考:$_COOKIE

谢谢布拉德克里斯蒂。

于 2013-03-18T13:49:22.363 回答
0

你问题的根源是你error_reporting(E_ALL);在代码的开头(和 ini_set('display_errors','On');开发环境)没有。

如果你有它,PHP 将显示没有 $_cookie 变量的错误消息。

于 2013-03-18T13:56:21.757 回答
0

您可能想尝试一下jquery-cookie,因为它使在 javascript 中设置和处理带有过期日期的 cookie 变得非常容易。

一条简单的线:

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

例如:

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

您的 PHP 片段对我来说看起来不错,并且 - 如果 cookie 设置正确 - 应该可以工作。

于 2013-03-18T13:58:30.933 回答
0

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

path=/; domain=.<?php echo $_SERVER['HTTP_HOST']; ?>
于 2013-03-18T14:04:17.153 回答
0

javascript中的cookie是用域设置的.explainasterisk.com

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

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

于 2013-03-18T14:05:00.990 回答