2013-05-04 70 views
34

我有一个页面(只有索引),客户可以向我发送电子邮件,我想从访问者来自哪个网站来查看。PHP:如何获取引荐网址?

如何使用PHP获得Referrer URL?我尝试了 $_SERVER['HTTP_REFERER'],但它一直都是空的。我怎样才能做到这一点?谢谢!

这里是我的$_SERVER包含了什么( “---- ----删失” 是我删)

array(31) { 
    ["DOCUMENT_ROOT"]=> 
    string(33) "/home/anything/public_html/design" 
    ["GATEWAY_INTERFACE"]=> 
    string(7) "CGI/1.1" 
    ["HTTP_ACCEPT"]=> 
    string(129) "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1" 
    ["HTTP_ACCEPT_ENCODING"]=> 
    string(13) "gzip, deflate" 
    ["HTTP_ACCEPT_LANGUAGE"]=> 
    string(14) "en-US,en;q=0.9" 
    ["HTTP_CACHE_CONTROL"]=> 
    string(8) "no-cache" 
    ["HTTP_CONNECTION"]=> 
    string(10) "Keep-Alive" 
    ["HTTP_COOKIE"]=> 
    string(189) "__utma=76630272.1468291432.1367655794.1367669576.1367674157.3; __utmb=76630272.1.10.1367674157; __utmc=76630272; __utmz=76630272.1367655794.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)" 
    ["HTTP_HOST"]=> 
    string(25) " ---- CENSORED ---- " 
    ["HTTP_USER_AGENT"]=> 
    string(57) "Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.15" 
    ["PATH"]=> 
    string(13) "/bin:/usr/bin" 
    ["QUERY_STRING"]=> 
    string(0) "" 
    ["REDIRECT_STATUS"]=> 
    string(3) "200" 
    ["REMOTE_ADDR"]=> 
    string(10) "5.15.68.79" 
    ["REMOTE_PORT"]=> 
    string(5) "57897" 
    ["REQUEST_METHOD"]=> 
    string(3) "GET" 
    ["REQUEST_URI"]=> 
    string(12) "/referer.php" 
    ["SCRIPT_FILENAME"]=> 
    string(45) "/home/anything/public_html/design/referer.php" 
    ["SCRIPT_NAME"]=> 
    string(12) "/referer.php" 
    ["SERVER_ADDR"]=> 
    string(13) " ---- CENSORED ---- " 
    ["SERVER_ADMIN"]=> 
    string(35) " ---- CENSORED ---- " 
    ["SERVER_NAME"]=> 
    string(25) " ---- CENSORED ---- " 
    ["SERVER_PORT"]=> 
    string(2) "80" 
    ["SERVER_PROTOCOL"]=> 
    string(8) "HTTP/1.1" 
    ["SERVER_SIGNATURE"]=> 
    string(189) " 
Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at ---- CENSORED ---- Port 80 

" 
    ["SERVER_SOFTWARE"]=> 
    string(125) "Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635" 
    ["UNIQUE_ID"]=> 
    string(24) "UYUNcUPeiDsAABkR2eYAAAAj" 
    ["PHP_SELF"]=> 
    string(12) "/referer.php" 
    ["REQUEST_TIME"]=> 
    int(1367674225) 
    ["argv"]=> 
    array(0) { 
    } 
    ["argc"]=> 
    int(0) 
} 
+0

可能重复[我如何使用$ \ _ SERVER \ ['HTTP \ _REFERER'\]找到该用户来自谷歌?](http://stackoverflow.com/questions/10613025/how-can-i -use-serverhttp-referer-find-that-user-came-from-google) – 2017-01-31 10:20:21

回答

99

$_SERVER['HTTP_REFERER']会给你引用页的URL。如果用户使用书签或通过手动输入URL直接访问您的网站,http_referer将为空。另外,如果用户以编程方式发布到您的页面(CURL),那么他们也没有义务设置http_referer。你错过了所有_,这是一个错字?

+1

对不起,我上面写错了,我的脚本写得不错,但是它是空的。 – sorinu26 2013-05-04 13:22:05

+1

@ sorinu26:脚本中仍然有一个拼写错误'$ _ ['not'$ ['。试着做'var_dump($ _ SERVER);'。在您的问题中发布结果 – OptimusCrime 2013-05-04 13:23:49

+3

我更正了问题描述。 – sorinu26 2013-05-04 13:43:24

5

下划线。不是空间。如果存在任何

$_SERVER['HTTP_REFERER']

+1

对不起,我上面写错了,我的脚本写得不错,但是它是空的。 – sorinu26 2013-05-04 13:21:23

+1

而且它绝对没有被直接访问,因为没有引用者?对不起,只需要问清楚。 – bearfriend 2013-05-04 13:22:52

+0

我尝试从我有直接链接的网站访问我的页面,但它仍然是空的。 – sorinu26 2013-05-04 13:25:49

0

如果$_SERVER['HTTP_REFERER']变量似乎并不工作,那么您可以使用Google AnalyticsAddThis Analytics

+1

分析显然是更好的解决方案。服务器变量显然有些奇怪。另外,http-referer可以很容易地被操纵。 – OptimusCrime 2013-05-04 13:30:13