嘿,我已经有一个计数器编码的视图,但我需要帮助阻止人们只是刷新和刷新以添加更多视图。通常情况下,我会标记存储在SQL表中查看的IP,页面名称和日期,在php中,我会运行搜索以查看是否有人在24小时内查看了该页面,但我运行的网站是主要在学校运行,我希望计算机实验室中的每台计算机在看到页面时都算作视图。再次,我可以使用cookie,但我的服务器没有正确发送cookie。它在我的测试服务器上工作正常但在专用的Web托管服务器上没有。还有其他方法可以阻止垃圾邮件吗?
继承我的代码
function connect() {
$domain = $_SERVER['HTTP_HOST'];
$dbhost = 'censored';
$dbname = 'censored';
$dbuser = 'censored';
$dbpass ='censored';
if ($domain == 'localhost'){
$dbhost = 'localhost';
$dbname = 'db1';
$dbuser = 'root';
$dbpass ='';
}
$con = mysql_connect($dbhost, $dbuser, $dbpass);
if(!$con){
trigger_error("Problem Connecting to the MySQL Server.");
}
$db = mysql_select_db($dbname, $con);
if(!$db){
trigger_error("Problem finding the Database!");
}
return $con;
}
function fetchdata($qry){
connect();
$result = mysql_query($qry);
return $fetch = mysql_fetch_assoc($result);
}
function addcounter($id) {
connect();
$counter = fetchdata("SELECT * FROM counter WHERE `path` = '$id';");
$counter = $counter['counter'];
if(isset($_COOKIE["counter_".$id.""])){
}else{
if ($counter === NULL) {
mysql_query("INSERT INTO counter VALUES (0, '" .$id. "');");
}
echo "<!-- submitting query -->";
mysql_query("UPDATE counter SET counter = `counter`+ 1 WHERE path = ".$id."") or die ('failupdate');
setcookie("counter_$id", "Playcookie_".$id."");
}
}
答案 0 :(得分:1)
如果你不能使用用户的IP地址(可能是因为他们在NAT后面?)并且你不能使用cookie,那么你真的没什么可做的。
你可以尝试将IP与用户代理字符串一起使用(可能在实验室中的不同计算机之间不同),但这会慢当然远非保证工作。
除此之外,我认为你没有选择。