Dleshka.org
Авторизация

Хак Хак один IP один просмотр.

+16
TipTop 30-10-2010 Хаки DLE 7 комментариев
Хак один IP один просмотр.

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
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'";



меняем на

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

$db->query( "UPDATE " . PREFIX . "_post set news_read=news_read+1 where id='{$row['id']}'" );



меняем на

{
                $_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
Информация
Зарегистрируйтесь чтобы комментировать публикацию.
kirill29rus
10 ноября 2010 10:16
+ 0 -
Подскажи поподробнее как именно делать запрос к базе?не могу понять этот запрос надо куда то вводить?
tiptop
10 ноября 2010 11:42
+ 0 -
phpmyadmin это админ панель твоего сайта на хосте. Зайди в управление самого сайта .Если не знаеш как спроси у тех. поддержку на твоем хосте.
BukerMan
10 января 2011 22:56
+ 0 -
хак на дле 9.0 работает?
StiX
1 февраля 2011 14:13
+ 0 -
на dle 9.0 работает!
SnapSh0t
14 октября 2011 15:22
+ 0 -
на dle 9.2 не работает!
Lionprizrak
12 декабря 2011 17:24
+ 0 -
Извиняюсь за глупый вопрос но, что такое ПРЕФИКС и где его найти?
где *ПРЕФИКС* - ваш префикс таблиц бд.
forze
25 января 2012 02:34
+ 0 -
На 9.5 работает. Благодарю!
Авторизация