4

我在 Chrome 和 Firefox 上遇到了一个奇怪的问题,改变它可以正常工作 IE。[ Edit1:IE有时也会出现问题]

前提:

  • 在我的 homepageView.php 中,我使用 jQuery 创建了一个 cookie,比如 Cookie1。
  • 我的主页有一个应用程序的链接,我们称之为 App1。
  • Cookie1 在 App1 的控制器中被访问,如果没有找到它会重定向回主页。

问题陈述

  • 清除缓存
  • 转到主页(已创建 Cookie1)
  • 单击指向 App1 的链接。
  • App1 被重定向到主页(App1 无法访问 Cookie1)
  • 再次点击 App1 链接,App1 工作正常。

片段

主页视图.php

   createCookie('loggedin_ind', true);

   function createCookie(name,value,days) {
        if (days) {
           var date = new Date();
           date.setTime(date.getTime()+(days*24*60*60*1000));
           var expires = "; expires="+date.toGMTString();
        }
        else{
           var expires = "";
        }
        document.cookie = name+"="+value+expires+"; path=/";

    }

App1Contoller.php

function index()
{
    if(isset($_COOKIE["loggedin_ind"]))
    {
        //Display App1
    }
    else
    {
        redirect('http://localhost/Sitename');
    }
}

任何人都可以请建议为什么 cookie 仅在第一次不被写入(通过 jQuery)不被读取(通过 php)?从第二次开始它工作正常。

它在我的本地主机上也可以正常工作,仅当代码迁移到服务器时才会出现问题。

Edit2:我用session替换了cookie逻辑,但问题仍然存在。

Edit3:我有一种强烈的感觉,这是一个与服务器相关的问题。我在我的 hostgator 共享主机上托管了相同的代码,它在那里工作正常,这个问题只发生在我的 godaddy VDS 上。谁能建议我如何检查我的两个服务器上的 cookie/会话处理方式是否不同。谢谢。

非常感谢任何帮助。谢谢。

4

3 回答 3

4

我检查了你的代码,代码没有问题,服务器端有问题

以下是一些步骤,请查看并与您现有的配置进行比较

步骤1 :-

使用输出缓冲在调用此函数之前发送输出,所有输出到浏览器的开销都在服务器中缓冲,直到您发送它。您可以通过在脚本中调用ob_start()ob_end_flush()来完成此操作,或者在 php.ini 或服务器配置文件中设置 output_buffering 配置指令。

第2步:-

PHP 指令register_globals 设置为 on然后 cookie 值也将变为变量。

在您的情况下最重要

设置值为 FALSE 的 cookie 将尝试删除 cookie,您不应使用布尔值。相反,使用 0 表示 FALSE,使用 1 表示 TRUE。

希望对你有帮助 :)

于 2012-06-15T07:40:22.573 回答
0

我的一个项目也有类似的问题。我从我的主页发布到一个 php 脚本,然后根据 php 页面的结果,它将被重定向回我的主页。重定向回我的主页时,我会丢失会话。

无论如何,您如何显示 App 1?

我发现我的错误是我使用绝对 url 而不是相对 url 引用我的 php 脚本,这将导致 php 脚本启动新会话,有效地覆盖我以前的会话。

当我将我的帖子网址从 http://www.mysite.com/folder/script.php更改为 /folder/script.php 时,我的会话将不再被覆盖。

于 2012-06-19T16:09:59.777 回答
0

我认为查看在第一个和第二个请求中发送给 App1 的纯 HTTP-Headers 会很有帮助......

如果 cookie 在两个标头中都是持久的,则这是与服务器相关的问题。否则我会仔细看看浏览器。

请求应该看起来像这样:

GET /app1 HTTP/1.1
Host: default.localhost
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: loggedin_ind=1

以下是 Firefox 的推荐扩展列表,用于查看纯 HTTP 标头:哪些 Firefox 扩展可以转储 HTTP 响应? 我个人在大多数情况下都使用 Firebug。

于 2012-06-18T13:45:52.437 回答