Помощь Ip фильтрация новостей

Тема в разделе "DLE", создана пользователем kl3vO, 20 ноя 2010.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. kl3vO

    kl3vO Читатель

    Заблокирован
    Регистр.:
    9 апр 2010
    Сообщения:
    41
    Симпатии:
    6
    Здравствуйте помогите мне с фильтраций новостей.
    Просто я поставил новостей по просмотрам.
    люди заходит на свою новость и делает обновление и просмотров увеличивают чтоб их новость была на самом верху...
    а я хочу чтоб просмотров по 1 ип читало чтоб просмотров много не было с одного ип считало...
     
  2. killoff

    killoff CD тихо, и не DVD меня ;)

    Moderator
    Регистр.:
    13 май 2008
    Сообщения:
    2.167
    Симпатии:
    796
    масло масленное...
    1. Выучи русский
    2. Излагай свои мысли ВНЯТНО!
    3. Читай правила раздела для создания тем: https://nulled.cc/showthread.php?t=130889
     
  3. korp

    korp Постоялец

    Регистр.:
    17 май 2008
    Сообщения:
    62
    Симпатии:
    10
    Гугл в помощь, видать ты о нём и не знал.

    1. Как правило ,при просмотре новости счетчик каждый раз прибавляет плюс один к просмотру. И это не зависимо от того кто смотрит новость. Таким образом, один пользователь может постоянно обновлять страницу и всегда счетчик будет ползти вверх. В данном случае хак исправляет и делает просмотры новости 1 просмотр с одного IP.
    2. Таким образом мы снижаем нагрузку на БД - обновка БД происходит, только тогда когда пользователь просматривает новость только в первый раз.
    Установка
    1) Через phpmyadmin делаем запрос
    Код:
    ALTER TABLE `*ПРЕФИКС*_post` ADD `ip_views` TEXT CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL;
    где *ПРЕФИКС* - ваш префикс таблиц бд.
    2) Находим в engine/engine.php
    PHP:
    if (! $newsid$sql_news "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " PREFIX "_post WHERE alt_name ='$news_name' AND date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR LIMIT 0,1";
                    else 
    $sql_news "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " PREFIX "_post where  id = '$newsid'";
    меняем на
    PHP:
    if (! $newsid$sql_news "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle, ip_views FROM " PREFIX "_post WHERE alt_name ='$news_name' AND date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR LIMIT 0,1";
                    else 
    $sql_news "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle, ip_views FROM " PREFIX "_post where  id = '$newsid'";
    3) Находим в engine/modules/show.full.php
    PHP:
    $db->query"UPDATE " PREFIX "_post set news_read=news_read+1 where id='{$row['id']}'" );
    меняем на
    PHP:
    {
                    
    $_IP $db->safesql$_SERVER['REMOTE_ADDR'] );
                    
    $ips=explode(","$row['ip_views']);
                    if(!
    in_array($_IP,$ips)){
                        if(
    $row['ip_views']=="")
                            
    $ip_views=$_IP;
                        else
                            
    $ip_views=$row['ip_views'].",".$_IP;
                    
    $db->query"UPDATE " PREFIX "_post set news_read=news_read+1 , ip_views='$ip_views' where id='{$row['id']}'" );
                }
                }
    Автор: keiZ
     
    kl3vO и E-body нравится это.
  4. biznesoft

    biznesoft

    Регистр.:
    11 фев 2008
    Сообщения:
    510
    Симпатии:
    128
    Пробовал так сделать на DLE 9.3.... хз.. но не заработало(((( как поправить для 9.3?
    спс.
     
Статус темы:
Закрыта.