Safari中的PHP cookie识别

时间:2016-07-18 09:05:46

标签: javascript php jquery cookies safari

您好我在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没有。

1 个答案:

答案 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();