• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

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

Статус
В этой теме нельзя размещать новые ответы.

kl3vO

Читатель
Заблокирован
Регистрация
9 Апр 2010
Сообщения
41
Реакции
6
  • Автор темы
  • Заблокирован
  • #1
Здравствуйте помогите мне с фильтраций новостей.
Просто я поставил новостей по просмотрам.
люди заходит на свою новость и делает обновление и просмотров увеличивают чтоб их новость была на самом верху...
а я хочу чтоб просмотров по 1 ип читало чтоб просмотров много не было с одного ип считало...
 
Здравствуйте помогите мне с фильтраций новостей.
Просто я поставил новостей по просмотрам.
люди заходит на свою новость и делает обновление и просмотров увеличивают чтоб их новость была на самом верху...
а я хочу чтоб просмотров по 1 ип читало чтоб просмотров много не было с одного ип считало...
масло масленное...
1. Выучи русский
2. Излагай свои мысли ВНЯТНО!
3. Читай правила раздела для создания тем: http://nulled.cc/showthread.php?t=130889
 
Гугл в помощь, видать ты о нём и не знал.

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
 
Пробовал так сделать на DLE 9.3.... хз.. но не заработало(((( как поправить для 9.3?
спс.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху