Php 当用户代理在Firefox中切换到移动设备时,HTTP REFERER为空

Php 当用户代理在Firefox中切换到移动设备时,HTTP REFERER为空,php,user-agent,Php,User Agent,我试图检测来自Facebook的用户,并为这些用户执行特定的操作 为此,我有以下代码: if (strpos($_SERVER['HTTP_REFERER'], 'facebook.com') !== false) { // FB specific code } 这段代码能够检测来自facebook(以及其他伪造它的人,但现在这并不重要)的流量,用于与移动无关的用户代理,但当用户代理切换到say和iPhone或Android用户代理时,$\u服务器[

我试图检测来自Facebook的用户,并为这些用户执行特定的操作

为此,我有以下代码:

    if (strpos($_SERVER['HTTP_REFERER'], 'facebook.com') !== false) 
    {
         // FB specific code
    }

这段代码能够检测来自facebook(以及其他伪造它的人,但现在这并不重要)的流量,用于与移动无关的用户代理,但当用户代理切换到say和iPhone或Android用户代理时,
$\u服务器['HTTP\u REFERER']
NULL


我理解$\u服务器['HTTP\u REFERER']应该“不受信任”,但为什么它适用于一组用户代理而不适用于另一组?

用户代理没有义务发送一个REFERER字段,如果他们这样做了,你就不能期望它是准确的。你不应该依赖他们这样做,“当用户代理被切换时”。如果你正在干扰浏览器的非标准功能,我可能会有这种行为。如果你的访问者是通过Facebook应用程序访问你的网站的,请编辑你应用程序的配置以包含Facebook特定的URL参数,即。
http://yoursite.com/?fb=1
。然后你可以检查参数以确定流量的来源。如果你来自不同的域,一些浏览器不会发送推荐人。推荐人不仅不可靠,而且非常不可靠。我正在通过firefox插件切换用户代理。该代码适用于大多数基于桌面的浏览器,而对于基于移动的浏览器则失败。我要说的是,“非标准”功能运行良好,它是PHP的$\u服务器值中的一个缺陷。