【问题标题】:Cookie not being detected in Wordpress在 Wordpress 中未检测到 Cookie
【发布时间】:2012-06-25 21:52:53
【问题描述】:

我正在使用this page 中的技术设置一个简单的移动/桌面重定向。我还在移动网站上设置了一个 cookie,这样如果用户想要链接回桌面网站,就会读取该 cookie 并且重定向将发生。我正在处理 Wordpress 网站,虽然重定向 确实 有效,但 cookie 没有 正常工作。这是正在发生的事情:

  • 移动重定向是否有效
  • Cookie设置成功(用WP外的测试页确认)
  • 当用户点击返回桌面网站时,cookie 没有被看到,用户被再次转储回移动网站。

我使用 2 个外部静态页面测试了我的代码,一切正常运行 100%。只是当我在 Wordpress 中使用相同的确切代码时不会。这是我在每个站点上的 header.php 文件中的代码:

桌面网站

<?php
    include('Mobile_Detect.php');
    $detect = new Mobile_Detect();
    if ( $detect->isMobile() && isset($_COOKIE["mobile"]) ) {
         $detect = "false";
    }
    else if ( $detect->isMobile() ) {
         header("Location:http://m.example.com");
    }
?>

移动网站

<?php setcookie('mobile','m', time()+3600, '/','.example.com'); ?>

PHP 代码是文件中的 first 东西,在任何 HTML 之前,并且在它之前或之后没有错误的空格。我已经通过回显一些文本和脚本 is 来测试此代码并执行它应该做的事情。这只是没有看到 cookie 并停止重定向到移动网站的问题之一。

几个小时后,我需要一些帮助!

【问题讨论】:

    标签: php wordpress mobile detect


    【解决方案1】:

    如果您在同一页面上设置 cookie,请将 cookie 值分配给变量。即:

    $cookievalue = "m";
    setcookie("mobile",$cookievalue);
    

    然后,在页面后面,您可以:

    if ( $detect->isMobile() && $cookievalue == "m" ) {
          $detect = "false";
    }
    else if ( $detect->isMobile() ) {
         header("Location:http://m.example.com");
    }
    

    【讨论】:

    • 谢谢,约翰。但我正在处理两个不同的网站。
    【解决方案2】:

    您的代码看起来不错 - 除非您的 Mobile_Detect 有任何问题,但我看不出您是如何考虑设置 cookie 的。

    我猜测您可能正在查看移动浏览器的问题,或者可能是隐私设置。不只是设置标准 cookie,而是尝试使用 Session - 无论如何,这几乎可以为您完成所有 cookie 工作。

    只需使用(在代码的最开始,没有 html 等,就像使用标准 cookie 一样);

    Session_start();
    if ( isset($_SESSION["mobile"]) ) {
    

    您实际上不需要对那段代码运行检测 - 如果 cookie/会话数组还没有被拾取,它就不会持有“移动”索引。

    所以不是;

    <?php setcookie('mobile','m', time()+3600, '/','.example.com'); ?>
    

    使用;

    <?php
    Session_start();
    $_SESSION['mobile'] = (bool) true;
    $_SESSION['m'] = (bool) true;
    $_SESSION['time'] = (int) time()+3600;
    

    等等等等。 (请记住 Session_start(); 需要位于将使用此 cookie 的每个页面的开头!)

    通过浏览器会话绑定 cookie 通常是一种很好的做法,我想这将有助于解决可能出现的任何浏览器安全问题。

    试一试,如果它适合你,请告诉我。

    祝你好运,

    • 欧根

    【讨论】:

    • 谢谢伊根。当我使用两个静态页面对其进行测试时,此技术有效,但 Wordpress 再次不合作。这是我的测试:http://clients.flingodesign.com/mobile-test/ 重定向适用于移动设备,但链接回桌面站点时停止重定向的会话不是。必须有一个简单的解释,并且必须基于 Wordpress。我不想使用任何插件或“更重”的解决方案。这似乎是最好的方法,但也许不是?
    【解决方案3】:

    问题解决了!

    运行 Drupal 的桌面站点是问题所在。这是一个缓存问题之类的,因为如果我运行 cron,整个检测方案就可以完美运行。第二次,它没有。它只在运行 cron 后立即工作一次。我将不得不让我们的常驻 Drupal 专业人士来解决这个问题。

    感谢大家的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多