【发布时间】:2011-03-31 08:45:38
【问题描述】:
嘿,我已经有一个视图计数器编码,但我需要帮助防止人们只是刷新和刷新以添加更多视图。通常,我会标记这个存储在 SQL 表中查看的 ip、页面名称和日期,在 php 中,我会运行搜索以查看具有该 ip 的人是否在 24 小时内查看过该页面,但我运行的网站是主要在学校运行,我希望计算机实验室中的每台计算机在他们看到页面时都算作一次视图。同样,我可以使用 cookie,但我的服务器没有正确发送 cookie。它在我的测试服务器上运行良好,但在专用的网络托管服务器上运行良好。有没有其他方法可以防止垃圾邮件?
这是我的代码
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."");
}
}
【问题讨论】:
-
“我的服务器没有正确发送 cookie”是什么意思?您是否检查了
Set-Cookie标头的响应标头?如果客户端没有收到 cookie,可能是因为它做错了(例如:setcookie调用之前的输出)。因为最好的方法确实是 cookie... -
Cookies 在测试服务器上工作。没有直播?