【问题标题】:PHP doesn't see a cookie unless I refresh the page again除非我再次刷新页面,否则 PHP 看不到 cookie
【发布时间】:2022-01-16 05:07:04
【问题描述】:

我知道这里还有其他类似的问题,但我已经阅读了答案,但仍然没有找到解决问题的方法。

所有这些脚本都在同一页面上,search-results。

它在数据表中显示结果,并让用户选择记录以保存到列表中,然后他们可以打印。所选记录的 ID 存储在 records cookie 中。我可以看到这行得通。

页面底部有一个链接可以触发这个 JS 函数:

function resultsPage(){
    window.location = "/search-results/?printqueue=true";
}

如您所见,这是同一个页面,但参数不同。这告诉页面显示他们保存的结果。

在使用?printqueue=true 进行初始加载时,PHP 无法读取 cookie,即使页面已刷新。在 PHP 获取 cookie 之前,我必须再次刷新(或单击链接)。为什么?

我得到这样的 cookie 数据:

if( $_GET['printqueue'] == 'true' && $_COOKIE['records'] !== 'undefined' ) {
    $posts_to_show = explode(',',$_COOKIE['records']);
}

如果这只是因为操作顺序,那很酷,那就无所谓了。但是任何干净的方法来“双重刷新”页面而不添加额外的参数并在它存在时再次刷新?我真的不想那样做……

【问题讨论】:

    标签: javascript php cookies


    【解决方案1】:

    我相信它是因为 $_COOKIE['records'] 尚未设置..

    试试:

    if( $_GET['printqueue'] == 'true' &&  isset($_COOKIE['records']) ) {
        // your code
    }
    

    【讨论】:

    • 这并不能回答问题。正如我所提到的,我知道 cookie 已经设置,并且我知道必须刷新才能将该 cookie 发送到服务器。在这种情况下,我必须经过两次刷新才能让 php 看到 cookie。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2017-02-16
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 2022-07-19
    相关资源
    最近更新 更多