您好我在safari中遇到这个奇怪的错误,我在网站上有一个年龄检查器,每当访问者年龄超过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" legal"没有设置,他还没有在年龄检查页面上。
现在在Chrome和Firefox上一切正常(还没有检查过IE浏览器),但是在safari中,每当我通过年龄检查并登陆主页时,它就会说cookie" tuned&#34 ;尚未定义,但我确实在我的控制台的存储面板中看到它。重新加载页面后,它确实识别出cookie。
任何人都知道如何解决这个问题?
编辑:
Javascript确实在第一次请求时识别cookie,php没有。
答案 0 :(得分:0)
这不是最好的解决方案,但这对我有用:
取代这个小脚本:
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();