Safari 中的 PHP cookie 识别

PHP cookie recognition in Safari

本文关键字:识别 cookie PHP 中的 Safari      更新时间:2023-09-26
嗨,我在

safari 中遇到了这个奇怪的错误,我在网站上有一个年龄检查器 en 每当访问者超过 18 岁时,我都会使用 JavaScript 创建一个 cookie 并使用 window.location.href 将他转发到主页。

在主页中,我有以下脚本:

if(!$_COOKIE['legal'] && icl_object_id(get_page_by_path('age-checker')->ID, 'page', false, ICL_LANGUAGE_CODE ) != $post->ID) {
   header('Location: '. get_permalink(icl_object_id(get_page_by_path('age-checker')->ID, 'page', false, ICL_LANGUAGE_CODE )));
}

如果未设置cookie"合法"并且他尚未进入年龄检查器页面,则用户会重定向。

现在在 Chrome 和 Firefox 上一切正常(尚未检查 IE),但在 safari 中,每当我通过年龄检查器并登陆主页时,它都会说 cookie"调整"尚未定义,但我确实在控制台的存储面板中看到了它。重新加载页面后,它确实可以识别cookie。

有人知道如何解决这个问题吗?

编辑:

Javascript 确实在第一次请求时识别 cookie,php 不会。

这不是最好的解决方案,但这对我有用:

替换这个小脚本:

if(!$_COOKIE['legal'] && icl_object_id(get_page_by_path('age-checker')->ID, 'page', false, ICL_LANGUAGE_CODE ) != $post->ID) {
    header('Location: '. get_permalink(icl_object_id(get_page_by_path('age-checker')->ID, 'page', false, ICL_LANGUAGE_CODE )));
}

由:

if(!$_COOKIE['legal'] && icl_object_id(get_page_by_path('age-checker')->ID, 'page', false, ICL_LANGUAGE_CODE ) != $post->ID) {
    header('Location: '. get_permalink(icl_object_id(get_page_by_path('age-checker')->ID, 'page', false, ICL_LANGUAGE_CODE )));
} else if($_COOKIE['legal'] && icl_object_id(get_page_by_path('age-checker')->ID, 'page', false, ICL_LANGUAGE_CODE ) == $post->ID) {
    header('Location: '. get_home_url());
}

在我设置 cookie 的 JavaScript 中:我只是重新加载页面

window.location.reload();