使用jQuery(视图)创建的cookie在第一次尝试时无法在php(控制器)中访问

时间:2012-06-06 11:30:25

标签: php javascript jquery cookies

我在Chrome和Firefox上遇到了一个奇怪的问题,因为改进它可以正常使用IE浏览器。 [ Edit1 :IE也会出现问题]

前提:

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

问题陈述

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

homepageView.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)? 它第二次工作正常。

它也适用于我的localhost,只有在代码迁移到服务器时才会出现问题。

Edit2:我用会话替换了 Cookie 逻辑,但问题仍然存在。

编辑3:我强烈认为这是服务器相关问题。 我在hostgator共享主机上托管了相同的代码,它在那里工作正常,问题只发生在我的godaddy VDS上。 任何人都可以建议我如何检查我的服务器上的cookie /会话是否被不同地处理。 感谢。

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

3 个答案:

答案 0 :(得分:4)

我已检查过您的代码,代码中没有问题,服务器端存在问题

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

第1步: -

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

第2步: -

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

最重要的是

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

希望这会对你有所帮助:)。

答案 1 :(得分:0)

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

如果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标头:What Firefox extension can dump HTTP responses? 在大多数情况下,我个人使用Firebug。

答案 2 :(得分:0)

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

无论如何,你如何展示App 1?

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

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