2013-05-04 99 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