【问题标题】:PHP cookie recognition in SafariSafari 中的 PHP cookie 识别
【发布时间】:2016-07-18 09:05:45
【问题描述】:

嗨,我在 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 并且用户尚未在年龄检查器页面上,这会使用户重定向。

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

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

编辑:

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

【问题讨论】:

  • 可能是客户端没有在第一次请求时将 cookie 发送到服务器?
  • 那么您认为什么是好的解决方案?有 2 个重定向或其他东西并不是很好。
  • 是的,客户端应该只在第一次请求时向服务器发送 cookie。检查为什么没有在第一次请求时发送它。
  • 您能给我一些有关如何执行此操作的相关链接吗?一直在谷歌搜索,但没有真正找到任何东西。

标签: javascript php jquery cookies safari


【解决方案1】:

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

替换这个小脚本:

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

【讨论】:

    猜你喜欢
    • 2011-10-12
    • 1970-01-01
    • 2013-12-31
    • 2018-03-02
    • 2018-08-23
    • 2021-11-04
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    相关资源
    最近更新 更多