【问题标题】:Same if else code does not work for mobile如果其他代码不适用于移动设备,则相同
【发布时间】:2016-07-30 18:38:12
【问题描述】:

我有代码可以检测推荐人是否来自 Facebook 并显示他/她的 Facebook 弹出框,如框。

它可以在所有浏览器的 PC 上完美运行,但不能在移动设备上运行。

我能做什么?

<?php

$ref=$_SERVER['HTTP_REFERER'];
$target_site = "https://www.facebook.com/";

if (isset($_SERVER['HTTP_REFERER']) && preg_match("/".preg_quote($target_site,"/")."/i",$_SERVER['HTTP_REFERER'])) {
    include "likebox.php";
}
else {
    $line = date('Y-m-d H:i:s') . " - $_SERVER[REMOTE_ADDR]";
    file_put_contents('visitors.log', $line . PHP_EOL, FILE_APPEND);
    include "nolike.php";
}

?>

【问题讨论】:

  • 标头Referer由大多数浏览器发送,但不是必需的标头,因此用户可以省略甚至修改它。看起来移动浏览器不发送推荐人因此你最终没有HTTP_REFERER
  • 有什么解决办法吗?
  • 如果您可以控制用户如何重定向到您的网站(网址),请更新网址以使用 get 参数,而不是检查 get 参数是否存在。
  • 请注意,默认情况下,在手机上 www.facebook.com 会重定向到 m.facebook.com。执行print_r( $_SERVER['HTTP_REFERER'] ) 以查看您在移动设备上的推荐人。
  • @DavidTsilosani 您需要阅读有关$_SERVER['HTTP_REFERER'] 并注意stackoverflow.com/a/6023980 的内容

标签: php mobile refer


【解决方案1】:

我刚刚添加了https://m.faceebok.com/ 作为推荐人,它可以工作

<?php



$ref=$_SERVER['HTTP_REFERER'];



$target_site = "https://www.facebook.com/";
$mob="https://m.facebook.com/";
if (isset($_SERVER['HTTP_REFERER']) && preg_match("/".preg_quote($target_site,$mob,"/")."/i",$_SERVER['HTTP_REFERER'])) {

    include "archive.php";
}
else {



$line = date('Y-m-d H:i:s') . " - $_SERVER[REMOTE_ADDR]";
file_put_contents('visitors.log', $line . PHP_EOL, FILE_APPEND);
include "404.php";
}


?>

【讨论】:

    猜你喜欢
    • 2018-10-31
    • 2016-02-19
    • 1970-01-01
    • 2021-05-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2016-11-02
    相关资源
    最近更新 更多