PHP View Counter Защита от спама - PullRequest
0 голосов
/ 31 марта 2011

Эй, у меня уже есть код счетчика просмотров, но мне нужна помощь, чтобы люди не могли просто обновляться и обновляться, чтобы добавить больше просмотров.Обычно я отмечал бы это, сохраняя ip, имя страницы и дату, просмотренную в таблице SQL, где в php я бы запустил поиск, чтобы увидеть, если кто-то с этим ip просматривал страницу в течение 24 часов, но я запускаю веб-сайт, которыйв основном работают в школах, и я хочу, чтобы каждый компьютер в компьютерной лаборатории считался просмотром страницы.Опять же, я могу использовать куки, но мой сервер неправильно отправляет куки.Он отлично работает на моем тестовом сервере, но не на выделенном сервере веб-хостинга.Есть ли другой способ предотвратить спам?

Вот мой код

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."");
}
}

1 Ответ

1 голос
/ 31 марта 2011

Если вы не можете использовать IP-адрес пользователя (предположительно, потому что он находится за NAT?), И вы не можете использовать куки, вы действительно мало что можете сделать.

Вы можете попытатьсяиспользуйте IP вместе со строкой пользовательского агента (которая может отличаться для разных компьютеров в лаборатории), но это будет и медленнее, и, конечно, далеко не гарантированно для работы.

ДругоеЯ думаю, что у вас нет выбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...