我在php中创建了一个跟踪网站,用于跟踪特定链接的点击次数 - 用于联盟链接跟踪。我在做的是:
当用户点击我网站提供的链接时,他会访问我的网站,在记录其IP地址后,将用户重定向到另一个映射到用户点击链接的地址。验证ip后,计数器会增加点击次数。
我面临的问题是,当我比较我的网站和facebook结果的点击次数时,我的结果是很多倍。我不知道是什么原因造成的。
我的结果:
Facebook结果:
我的问题是为什么会有区别?如果facebook有一些额外的检查,有人知道它们是什么吗?或者他们是私人的?或Facebook只是减少了点击次数?
非常感谢帮助。我被困在这里。
以下是检查访问者IP并增加点击计数器的代码:
<?php
require_once "dbdata.php";
if(isset($_GET['linkid']) && !empty($_GET['linkid'])){
$id = $_GET['linkid']; //getting link id to fetch data from database
$ip = $_SERVER['REMOTE_ADDR']; // getting visitors ip address
//database connection
@$db = new mysqli(hostname,username,password,dbname) or die(json_encode(array("status"=>"Can not connect (Database Connection Error)")));
//getting data from table
$query = "select * from links_shared where id = $id ;";
$result_link = $db -> query($query) or die(json_encode(array("status"=>"Error Fetching previous income data")));
$row_link = $result_link-> fetch_assoc();
$link = $row_link['orignal']; //the link to be redirect the user to
header("Location:".$link); //redirected
if($row_link['status'] == "live"){ //status of link should be live
$array_ip = explode(",", $row_link['ip']); //comma sepearted string of ips to array
if(!in_array($ip, $array_ip)){ //check if ip is not already present
$query = "select * from links_deleted where url = '$link' ;"; //getting block list
$result_del = $db -> query($query) or die(json_encode(array("status"=>"Can not select deleted")));
if($result_del -> num_rows <1){ //check if link not in block list
$concat = ",".$ip;
echo $query = "update links_shared set clicks = (clicks + 1), ip = concat(ip,'$concat') where id= $id; ";
$result_update = $db -> query($query) or die(json_encode(array("status"=>"can not update clicks")));
}
}
}
}
?>
答案 0 :(得分:2)
Facebook可能会使您的脚本接受的点击无效(例如:不受信任的IP,重复的IP,自动机器人检测......)或更简单的Facebook只能看到来自其平台的点击,但您的脚本会收到来自所有地方的所有点击。
当然,您的脚本本身也可能存在问题,但由于您没有显示它,我无法解决这个问题。