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

首次尝试时,无法在php(控制器)中访问使用jQuery(视图)创建的cookie,php,javascript,jquery,cookies,Php,Javascript,Jquery,Cookies,我在Chrome和Firefox上遇到了一个奇怪的问题,换言之,它在IE上运行良好。 [Edit1:IE有时也会出现问题] 前提: 在我的homepageView.php中,我使用jQuery创建了一个cookie,比如Cookie1 我的主页有一个应用程序的链接,我们称之为App1 Cookie1在App1的控制器中被访问,如果找不到,它将重定向回主页 问题陈述 清除缓存 转到主页(创建Cookie1) 点击App1的链接 App1被重定向到主页(App1无法访问Cookie1) 再次点

我在Chrome和Firefox上遇到了一个奇怪的问题,换言之,它在IE上运行良好。 [Edit1:IE有时也会出现问题]

前提:

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

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

homepageView.php

App1Contoller.php

有人能解释一下为什么cookie没有被写入(jQuery)或者没有被读取(php)吗? 从第二次开始就可以正常工作

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

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

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


非常感谢您的帮助。谢谢。

我已经检查了您的代码,代码中没有问题,服务器端有问题

下面是一些步骤,请检查并与现有配置进行比较

第1步:-

在调用此函数之前,使用输出缓冲发送输出,在发送之前,所有输出到浏览器的开销都在服务器中缓冲。可以通过在脚本中调用ob\u start()ob\u end\u flush()或在php.ini或服务器配置文件中设置output\u buffering configuration指令

第2步:-

PHP指令register\u globals设置为on,则cookie值也将被设置为变量

在您的情况下最重要

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


希望这会对您有所帮助:)

我认为查看第一个和第二个请求中发送给App1的普通HTTP头会非常有帮助

如果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头的推荐扩展列表:
我个人在大多数情况下都使用Firebug。

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

无论如何,你是如何显示应用程序1的

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

当我将我的帖子url从 http://www.mysite.com/folder/script.php
/folder/script.php我的会话将不再被覆盖。

您可以检查这些链接-确保会话是可写的。。。我现在使用CodeIgniter会话而不是Cookie,但是在静脉中。。。在CI会话中使用了ob_start和ob_end_flush(),但没有帮助。。。感谢您的0对错误输入。。。我们将在将来牢记这一点。但是这些投入都没有帮助解决这个问题。。我使用了相对路径而不是绝对路径,谢谢你的建议。。。
function index()
{
    if(isset($_COOKIE["loggedin_ind"]))
    {
        //Display App1
    }
    else
    {
        redirect('http://localhost/Sitename');
    }
}
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