Эй, у меня уже есть закодированный счетчик просмотров, но мне нужна помощь, чтобы люди не могли просто обновлять и обновлять, чтобы добавить больше просмотров. Обычно я бы отметил это сохранением IP-адреса, имени страницы и даты просмотра в таблице SQL, где в 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."");
}
}
1 ответ
Если вы не можете использовать IP-адрес пользователя (предположительно, потому что он находится за NAT?) и вы не можете использовать файлы cookie, вы мало что можете сделать.
Вы можете попробовать использовать IP-адрес вместе со строкой пользовательского агента (которая может отличаться на разных компьютерах в лаборатории), но это будет и медленнее, и, конечно, далеко. от гарантированно до работы.
Кроме этого, я думаю, у вас нет вариантов.
Похожие вопросы
Новые вопросы
php
PHP — это широко используемый язык сценариев общего назначения с открытым исходным кодом, мультипарадигмальный, динамически типизированный и интерпретируемый, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.
Set-Cookie
? Если куки не получены клиентом, это, вероятно, потому, что это сделано неправильно (например: вывод перед вызовомsetcookie
). Потому что лучший способ - это действительно печенье...