Ru-Board.club
← Вернуться в раздел «Ikonboard v.2»

» Хак. Фильтр по

Автор: ivank
Дата сообщения: 23.06.2002 21:38
Посмотреть в работе можно здесь: http://www.forum-oszone.m-9.net/forums.cgi?forum=14




Хак "Фильтр по "


Фильтр по названию, описанию и автору темы.


Файл forums.cgi

В самом начале после:


Код:
$bypass = &stripMETA("$bypass");
$inforum = &stripMETA("$inforum");
$intopic = &stripMETA("$intopic");
$action = &stripMETA("$action");
$inshow = &stripMETA("$inshow");
$jumpto = &stripMETA("$jumpto");
Автор: durachka
Дата сообщения: 23.06.2002 22:05
УРА! Хоть какие-то подвижки. Пойду свою конфу мучить .

Добавлено

Цитата:
$notify = $query -> param('notify');
$notify = &stripMETA("$notify");

А у меня нет таких строк . Может чуть больше кода приведете?
Автор: pechalny
Дата сообщения: 23.06.2002 23:09
ivank
Пашет
Тока очепятка у БигМака на борде, я ему уже кинул мессагу в асю

Цитата:
Фильр:
Автор: durachka
Дата сообщения: 23.06.2002 23:20

Цитата:
<input type=hidden name=forum value="$inforum">Фильр:

опечаточка. фильТр
А так все работает. Спасибо!
Автор: MVY
Дата сообщения: 24.06.2002 01:09
Ураааааааа . Наконец-то нашёлся хоть один добрый человек . Огроменное тебе спасибо ivank. А то все ломались поделиться им
Автор: Grey2002
Дата сообщения: 24.06.2002 06:50
ivank
спасибо за хак огроомное
Автор: ivank
Дата сообщения: 24.06.2002 07:14
durachka

Цитата:
Цитата:$notify = $query -> param('notify');
$notify = &stripMETA("$notify");

А у меня нет таких строк . Может чуть больше кода приведете?
Сорри это остатки предыдущего самописанного хака. Добавлять
Цитата:
###### ХАК. Фильтр тем. by ivank
$filterby = $query -> param( 'filterby' );
$filterstring = $query -> param( 'filterstring' );
chomp $filterstring;
if( $filterby ne '' )
{
$filterpart = "&filterby=$filterby&filterstring=$filterstring";
}
###### Конец ХАКА
Надо после:
Код: $query = new CGI;

$cookiepath = $query->url(-absolute=>1);
$cookiepath =~ s/$thisprog//sg;
$bypass = $query -> param('bypass');
$inforum = $query -> param('forum');
$intopic = $query -> param('topic');
$action = $query -> param('action');
$inshow = $query -> param('show');
$jumpto = $query -> param('jumpto');
Автор: Alexander Ipp
Дата сообщения: 24.06.2002 10:05
ivank
Через Ж ты сделал, имхо.
У меня всё проще реализовано.
Во-первых, зачем лишний массив, а во-втором лучше в куки пихать, чем в урл...
Автор: MVY
Дата сообщения: 24.06.2002 10:06
ivank
А можно туда ещё добавить - "По описанию" и по "слову в сообщении" ? Было бы вообще прекрасно
Автор: Grey2002
Дата сообщения: 24.06.2002 11:35
ivank
спасибо.. поставил нормально, а то этих строк тоже не нашёл
Автор: ivank
Дата сообщения: 24.06.2002 17:39
Alexander Ipp
В куки? Это идея... Но! А что если кто-то спросил, "что такое MySQL" у меня в форуме, допустим. И теперь я ему хочу сказать, что в инфы о MySQL Полно... И что я делаю? Прально даю урл типа http://forum/forums.cgi?forum=XXX&filterby=title&filterstring=MySQL , а как такое с куками провернуть? А то что через Ж написано это не страшно. Я на перле писать не умею На самом то деле при 250 темах оно фильтрует вполне себе быстро (время выполнения не возрастает даже на сотую). А как это сделать без извратов с временным массивом -- не представляю.

MVY
По "слову в собщении" -- это уже полноценный поиск... А по описанию легко... Меняй
Код: ##### ХАК. Фильтр топиков. by ivank.
if( $filterby eq 'title' )
{
@filtered_topics = ();
$lc_filterstring = $filterstring;
$lc_filterstring =~ tr/А-ЯЁЧ/а-яёч/;
foreach $topic ( @topics )
{
($topicid, $lc_topictitle, $topicdescription, $threadstate, $threadposts, $threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate) = split(/\|/,$topic);
$lc_topictitle =~ tr/А-ЯЁЧ/а-яёч/;
if( $lc_topictitle =~ /$lc_filterstring/i )
{
push @filtered_topics, $topic;
}
}
@topics = @filtered_topics;
}
elsif( $filterby eq 'author' )
{
@filtered_topics = ();
foreach $topic ( @topics )
{
($topicid, $topictitle, $topicdescription, $threadstate, $threadposts, $threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate) = split(/\|/,$topic);
if( $startedby =~ /$filterstring/i )
{
push @filtered_topics, $topic;
}
}
@topics = @filtered_topics;
}
##### Конец хака.
Автор: Alexander Ipp
Дата сообщения: 24.06.2002 17:44
MVY
Первое без проблем, второе - уже сложнее...
Там надо поиск уже в самой теме делать...
По первому:
ivank уже всё сделал, так что я потёр.
Добавлено
ivank
Ой, пока писал - ты уже сделал... Сорря...

Добавлено
ivank
Хммм... Тоже верно. Ладно-с, подумаю.
Автор: MVY
Дата сообщения: 24.06.2002 23:26
ivank
Alexander Ipp
Большое спасибо
Автор: Shurik
Дата сообщения: 26.06.2002 12:52
ivank
в натуре полезный хак.
фэнкс. сам хотел замутить себе такое (надеялся, что где-то есть уже такое).
Автор: ivank
Дата сообщения: 26.06.2002 13:05
Я офигиваю. Я слышал что, по крайней мере, четыре человека уже давно хотели что-нить подобное... И всё не писали, на это времени ушло -- 15 минут. Хот не, один написал, и даже обещал выложить, но как то... не выложил в обсчем =)
Автор: Shurik
Дата сообщения: 26.06.2002 13:19
ivank
15 минут? быстро че-то. мы быстро тебя запрягем нам хаки писать!
Автор: ivank
Дата сообщения: 26.06.2002 17:35
Shurik
Это чистой воды кодирование, никаких мыслительных операций в течении написания кода я не совершал. У меня в голове крутится более продвинутый вариант фильтра, который будет работать го-о-ораздо быстрее, но в этом случае код придётся менять гораздо сильнее, а мне лень ибо то что есть и так нормально работает, пока...
Автор: Alexander Ipp
Дата сообщения: 26.06.2002 18:51
ivank
Хых, а с временным массивом ты был прав.
Правда, я немного попроще сделал, не так громоздко. Но принцип тот же.
Автор: Shurik
Дата сообщения: 27.06.2002 10:14
ivank

Цитата:
Это чистой воды кодирование, никаких мыслительных операций в течении написания кода я не совершал.
код ведь тоже придумать надо...
Автор: Net_man
Дата сообщения: 24.08.2003 22:06
Что-то ничего не получается. Вроде все делаю как здесь, а получаю все время
Цитата:
Software error:
Missing right curly or square bracket at forums.cgi line 515, at end of line
syntax error at forums.cgi line 515, at EOF
Execution of forums.cgi aborted due to compilation errors.
Посмотрел 515-ю строку - это самая последняя в скрипте. Может кто подскажет чего?

Добавлено
Еще одно
Цитата:
&moderator;
&title;


Цитата:
$output = qq~
что-то
Модератор: $modoutput
что-то
~;

Не нашел.
Цитата:
Модератор
у меня вообще нет, нашел в одном месте $modoutput, но по-моему не там и по-другому. Пробовал ставить после той хреновины, где $modoutput; пробовал сразу после той бадьи, что идет сразу за
Цитата:
&moderator;
&title;
- результат один.
Автор: lynx
Дата сообщения: 25.08.2003 01:18
Net_man


Цитата:
Что-то ничего не получается. Вроде все делаю как здесь, а получаю все время


Выложи свой forums.cgi в txt-файл и дай ссылку.
Автор: Net_man
Дата сообщения: 25.08.2003 19:11
lynx
http://net-man.narod.ru/baners/forums.txt
Автор: lynx
Дата сообщения: 25.08.2003 23:35
Net_man

Так.

Вот этот кусок:


Код:
#################--- Begin the program ---###################
$thisprog = "forums.cgi";
$query = new CGI;
$cookiepath = $query->url(-absolute=>1);
$cookiepath =~ s/$thisprog//sg;
$bypass = $query -> param('bypass');
$inforum = $query -> param('forum');
$intopic = $query -> param('topic');
$action = $query -> param('action');
$inshow = $query -> param('show');
$jumpto = $query -> param('jumpto');
###### ХАК. Фильтр тем. by ivank
$filterby = $query -> param( 'filterby' );
$filterstring = $query -> param( 'filterstring' );
chomp $filterstring;
if( $filterby ne '' )
{
$filterpart = "&filterby=$filterby&filterstring=$filterstring";
}
###### Конец ХАКА
die "Hack attempt!" unless $inforum =~ m!\A\d{1,3}\Z!;
die "Hack attempt!" if $intopic && $intopic !~ m!\A\d{1,7}\Z!;
$inmembername = cookie("amembernamecookie");
$inpassword = cookie("apasswordcookie");
$bypass = &stripMETA("$bypass");
$inforum = &stripMETA("$inforum");
$intopic = &stripMETA("$intopic");
$action = &stripMETA("$action");
$inshow = &stripMETA("$inshow");
$jumpto = &stripMETA("$jumpto");
Автор: Net_man
Дата сообщения: 26.08.2003 02:35
lynx
Увы:

Цитата:
Software error:
Missing right curly or square bracket at forums.cgi line 535, at end of line
syntax error at forums.cgi line 535, at EOF
Execution of forums.cgi aborted due to compilation errors.

535 - последняя строчка. Сейчас попробую "с нуля" поставить то, что в шапке в бэкапный forum.cgi.

Добавлено
lynx
Ураааа!!! Получилось. Спасибо, тебе lynx огромное.
Автор: Marilda
Дата сообщения: 17.02.2004 00:21
Народы, как по-вашему, этот фильтр сильно грузит? Стоит связываться при слабом сервачке?
Всем привет.
Автор: trew
Дата сообщения: 17.02.2004 00:31
Marilda В отличии от поиска не очень, хорошая штучка.
Автор: Net_man
Дата сообщения: 17.02.2004 06:10
Marilda

Цитата:
фильтр сильно грузит?

Я лично особой разницы не заметил. Зато штука - супер-полезная.
Автор: lynx
Дата сообщения: 17.02.2004 21:19
Marilda

Цитата:
этот фильтр сильно грузит? Стоит связываться при слабом сервачке?


Не грузит совсем.
Автор: Marilda
Дата сообщения: 20.02.2004 12:55
Огромное спасибо! Прекрасный хак.
Автор: Marilda
Дата сообщения: 26.02.2004 14:09
Хак работает замечательно, но есть баг Если результат поиска - несколько страниц, то вместо ссылок на 2-ю и следующие страницы результатов стоят ссылки на страницы форума.
Т.е., вместо ссылок на

Код: хттп://путь/cgi-bin/forum/forums.cgi?forum=1&show=20&filterby=author&filterstring=автор

Страницы: 12

Предыдущая тема: Три переменные в профайле пользователя ($misc1-3)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.