使用 jQuery(view) 创建的 cookie 在第一次尝试时无法在 php(controller) 中访问

cookie created using jQuery(view) not accessible in php(controller) on first attempt

本文关键字:controller 访问 php 第一次 view jQuery 创建 使用 cookie      更新时间:2023-09-26

我在Chrome和Firefox上遇到了一个奇怪的问题,对于更改它的工作正常IE。[编辑1:IE有时也会出现问题]

前提:

  • 在我的主页View.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)仅在第一次?从第二次开始工作正常。

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

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

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

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

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

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

第 1 步:-

使用输出缓冲在

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

第 2 步:-

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

在您的情况下最重要

设置值为 FALSE 的 cookie 将尝试删除该 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 标头的推荐扩展列表:哪个 Firefox 扩展可以转储 HTTP 响应?我个人在大多数情况下使用Firebug。

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

无论如何,您如何显示应用程序 1?

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

当我将我的帖子网址从http://www.mysite.com/folder/script.php 至/文件夹/脚本.php我将不再覆盖我的会话。