当用户在搜索引擎搜索进入网站,会有进入的关键词,一般是$_SERVER['HTTP_REFERER']中获取到链接/提交当前页的父页面URL,也就是上一次的url。(虽然REFERER可以伪造,)
在百度搜索词进入的链接是固定的两种URL形式,一个是/?word=xxxxx ,另一个是/?wd=xxxxx
xxxxx就是搜索词
所以可以使用正则匹配REFERER信息就能得到进入网站所用的搜索词了。
上源码:
function search_word_from() {
$referer = isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'';
if(strstr( $referer, '')){ //百度
preg_match( "|baidu.+wo?r?d=([^\&]*)|is", $referer, $tmp );
$keyword = urldecode( $tmp[1] );
$from = 'baidu';
}elseif(strstr( $referer, '') or strstr( $referer, '')){ //谷歌
preg_match( "|google.+q=([^\&]*)|is", $referer, $tmp );
$keyword = urldecode( $tmp[1] );
$from = 'google';
}elseif(strstr( $referer, '')){ //360搜索
preg_match( "|so.+q=([^\&]*)|is", $referer, $tmp );
$keyword = urldecode( $tmp[1] );
$from = '360';
}elseif(strstr( $referer, '')){ //搜狗
preg_match( "|.+query=([^\&]*)|is", $referer, $tmp );
$keyword = urldecode( $tmp[1] );
$from = 'sogou';
}elseif(strstr( $referer, '')){ //搜搜
preg_match( "|.+w=([^\&]*)|is", $referer, $tmp );
$keyword = urldecode( $tmp[1] );
$from = 'soso';
}else {
$keyword ='';
$from = '';
}
return array('keyword'=>$keyword,'from'=>$from);
}
//以下为测试
//在搜索引擎搜索个关键词,进入网站
$word = search_word_from();
if(!empty($word['keyword'])){
echo '关键字:'.$word['keyword'].' 来自:'.$word['from'];
}
?>
end...