我正在开发一个脚本,它会将每个访问者的引用网址保存到会话var中,然后将其存储到数据库中,其他数据包括将访问者带到网站的google关键字/词组以及引用链接是常规谷歌列表(又名有机结果)或付费链接(谷歌adwords)。 到目前为止,我已经提出了这个,但它并不总是有效。做更多的阅读我发现在几个条件下http_referer被阻止或隐藏,所以我正在寻找一种更好的方法来实现这一点。
$session = & JFactory::getSession();
if (!$session->get('referrer', $origref, 'extref')) //If does not exist
{
$origref = $_SERVER['HTTP_REFERER'];
$session->set('referrer', $origref, 'extref');
$url = $session->get('referrer', $origref, 'extref');
if(!$url && !$url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : false) {
$q = 'No referer';
}
$parts_url = parse_url($url);
$query = isset($parts_url['query']) ? $parts_url['query'] : (isset($parts_url['fragment']) ? $parts_url['fragment'] : '');
if(!$query) {
$q = 'Not from Google';
}
parse_str($query, $parts_query);
$q = isset($parts_query['q']) ? $parts_query['q'] : isset($parts_query['oq']) ? $parts_query['oq'] : (isset($parts_query['p']) ? $parts_query['p'] : 'could not fetch keyword');
if(stristr($origref, 'aclk')) { // if referer is a google adwords link as opposed to an organic link
$type = ', paid link, '.$_SERVER['HTTP_USER_AGENT'];
} else {
$type = ', organic result, '.$_SERVER['HTTP_USER_AGENT'];
}
$ginfo = $q.$type;
$session->set('referrer', $ginfo, 'extref');
}
function search_engine_query_string($url = false) {
if(!$url && !$url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : false) {
return 'No referer';
}
$parts_url = parse_url($url);
$query = isset($parts_url['query']) ? $parts_url['query'] : (isset($parts_url['fragment']) ? $parts_url['fragment'] : '');
if(!$query) {
return 'Not from Google';
}
parse_str($query, $parts_query);
return isset($parts_query['q']) ? $parts_query['q'] : (isset($parts_query['p']) ? $parts_query['p'] : '');
}
有什么想法吗?
答案 0 :(得分:0)
另一种典型的方法是为跟踪器标识提供专门的输入URL。例如:
subdomain.mysite.com/tracker?userid=12345&source=adwords
当该网址被点击时,您知道该来源是adwords,您会立即将用户重定向回主页,并进行header
重定向。这样,他们就不知道跟踪,它应该非常可靠。
答案 1 :(得分:0)
我可能错了,但除非你控制两端(即推荐人和被推荐者),否则我认为这不可能超出你已经做过的事情。
如果是出于分析目的,您可以使用Google Analytics和Google Webmaster Tools。
他们互相补充,并且非常希望你想用脚本完成