以前に使用$_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;
}