0
我之前沒有使用過$_SERVER['HTTP_REFERER']
,我不知道如何使用它找到該用戶通過點擊Google搜索結果中的鏈接來到我的網站。用戶可以來自google.com,google.co.uk等....
幫助非常感謝。
我之前沒有使用過$_SERVER['HTTP_REFERER']
,我不知道如何使用它找到該用戶通過點擊Google搜索結果中的鏈接來到我的網站。用戶可以來自google.com,google.co.uk等....
幫助非常感謝。
$url = $_SERVER['HTTP_REFERER'];
$query = parse_url ($url, PHP_URL_QUERY);
$host = parse_url ($url, PHP_URL_HOST);
if (strstr ($query, 'q=') && strstr ($host, 'google.')) {
// user came from google
else {
// user didnt come from google
}
這是我的解決方案,當頁面請求中不存在引用鏈接時,不會發出任何警告。
public function doesUserCameFromCrawler() {
$crawlerList=array("google.","yandex.","bing.");
if (isset($_SERVER['HTTP_REFERER'])) {
$referringPage = parse_url($_SERVER['HTTP_REFERER']);
if (isset($referringPage['host'])) {
$referringHost = $referringPage['host'];
foreach ($crawlerList as $crawler) {
if (strpos(strtolower($referringHost),$crawler) !== FALSE) {
return TRUE;
}
}
}
}
return FALSE;
}
但是,使用HTTP_REFERER時要小心。它在頁面標題中發送,所以它很容易被客戶端修改。不要小心處理它,而不是像$ _POST或$ _GET變量那樣小心。 –
那麼是否有比HTTP_REFERER更好的解決方案? – guitarlass
不,對不起! :) – Jeroen