【发布时间】: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 的内容