Задать вопрос
webcoderpro
@webcoderpro
Верстальщик

Как сделать уникальные просмотры статей по IP адресу?

Вот запрос
///Функция для просмотра новости, видео и фото
function views($table, $title){
db_connect();
$query = sprintf(" SELECT views FROM $table WHERE $table.title_url = '%s' ",
mysql_real_escape_string($title));
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$views = $row['views']+1;
mysql_query(" UPDATE $table SET views='$views' WHERE $table.title_url = '$title' ");
}

Мне нужно чтобы просмотры не считывались каждый раз, когда пользователь нажимает.
Хотя бы не считывались просмотры при обновлении страницы конкретного статьи.
  • Вопрос задан
  • 1412 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
Узнаем IP пользователя:

if (!empty($_SERVER['HTTP_CLIENT_IP'])){
    $ip = $_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else{
    $ip = $_SERVER['REMOTE_ADDR'];
}


Предположим, что человек решил обновить страницу, но IP уже есть в вашей базе, следовательно остается только проверить на соответствие и в случае совпадения не засчитывать просмотр.

$query = mysql_query("SELECT `ip` from `table` where `ip` = '$ip'");
mysql_fetch_array($query);
if(isset($query['ip'])){
    // Если ip есть, то не засчитываем
}else{
    // Иначе засчитываем посещение и делаем sql запрос для увеличение счетчика
}

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

Возможно у вас возникнет вопрос об определении IP адреса, мол зачем там аж три разных варианта получения ip. Тык вот $_SERVER['HTTP_CLIENT_IP'] и $_SERVER['HTTP_X_FORWARDED_FOR']) содержат реальный ip адрес пользователя, то есть, если он зайдет к вам, используя прокси сервер, то вы получите не ip прокси, а ip его компа. Но на случай, если в этих двух переменных не будет ip адреса, то воспользуемся $_SERVER['REMOTE_ADDR'].

Есть еще вариант реализации с привязкой к кукки. Почитайте и попробуйте. Принцип тот же.

Я думаю, достаточно информации для того, чтобы вы сейчас пошли и сделали уникальный просмотр по IP адресам. Так что дерзайте :). А вообще почитайте о том, как лучше делать уникальные просмотры, ибо делать только по ip адресу не есть корректно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@motcart
В куки записывайте id статей, которые посмотрел конкретный пользователь, а не только с одного ip, так как с одного ip могут зайти несколько человек. Если в куки есть id текущей статьи, то счетчик не плюсуете. Так как статей пользователь посмотрит много, то значение в куки надо записывать в виде массива id. view = (2, 16, 27, ...)
Ответ написан
webcoderpro
@webcoderpro Автор вопроса
Верстальщик
Как я понимаю нужно создать отдельную таблицу, в которым будеть хранится список IP адресов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы