我的网站上有一个IN / OUT比率命中计数系统。当用户被发送到我的网站时,我会抓住推荐人,剥离域名,查找域名并点击+1到hits_in。非常简单。我发现,如果用户刷新页面,引荐者将被重新发送到该网站,并将其视为另一个+1。更糟糕的是,如果用户点击网站上的某些链接,然后点击“返回”转到原始页面,则重新发送引荐来源,并将其视为另一个+1。因此,如果一个外国网站向我发送一个用户,点击一个视频链接,查看视频,在他的浏览器中点击BACK,然后执行3次,它将被视为一个网站发送给我4个用户实际上它只是1。
任何方式我都可以阻止这2个示例的发生,而不会在执行+1之前实际记录所有IP并检查每个IP的访问时间。
答案 0 :(得分:2)
我不是这方面的专家,但你不能只使用会话。暂时将引用的url存储到会话中,因此如果用户单击“返回”,则检查用户会话是否包含引用站点。如果它包含不计数。
答案 1 :(得分:1)
做类似的事情,
如果用户没有设置cookie 'referer_logged'
,请记录他们的引用并设置cookie。
这将使每个用户只记录一个引用者。
答案 2 :(得分:1)
这是我有时使用的引用脚本。
将它放在你的函数文件中。
function referer()
{
if(isset($_SERVER["HTTP_REFERER"]) && substr($_SERVER["HTTP_REFERER"], 0, 22) != "http://www.example.com" && substr($_SERVER["HTTP_REFERER"], 0, 18) != "http://example.com")
{
$result = sprintf("INSERT INTO referer (referer, ip, date) VALUES ('%s', '%s', '%d')", mysql_real_escape_string($_SERVER["HTTP_REFERER"]), mysql_real_escape_string($_SERVER["REMOTE_ADDR"]), time());
$query = mysql_query($result);
if($query)
{
return true;
}
else
{
return false;
}
}
}
索引文件中的某个地方
session_start();
if(!isset($_SESSION["referer"]))
{
if(referer())
{
$_SESSION["referer"] = 1;
}
}