Задать вопрос
Ответы пользователя по тегу MySQL
  • Как сделать уникальные просмотры статей по IP адресу?

    Узнаем 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 адресу не есть корректно.
    Ответ написан
    8 комментариев