Итак, предположим, что вы пишете гостевую на perl и столкнулись с такой проблемой: гостевая готова, все работает, но чего-то не хватает, а именно - гостевая слишком проста. Вам хочется сделать её более "навороченной". Что ж, попробую показать вам, как можно легко, используя стандартные средства perl, сделать вашу гостевую лучше.
• Часть первая. Избавляемся от мата.
Вам надоело, что всякие уроды матерятся у вас в гостевой? Сейчас я покажу, как очень легко можно сделать защиту от мата.
Для начала, создайте какой-нибудь текстовой файл, например, bad_words.dat, в котором пропишите корни всех матов - не сами маты, а именно их корни. Если вы не знаете, как найти корень слова, сходите в ближайшую среднюю школу, найдите там учителя русского языка и попросите объяснить.
Ладно, предположим, что корни слов-матов вы смогли выделить и записали их в текстовик построчно. Теперь небольшой кусочек кода, который заменит подобные корни будет заменять в словах, например, на "[цензура]".
Для начала, откроем созданный нами текстовик и загоним все его строки в один массив, например в @bad_w:
open BADW, "bad_words.dat";
@bad_w = ;
close BADW;
Затем, используя цикл foreach и оператор подстановки s///, легко и просто заменим все маты:
foreach $bad_w (@bad_w){
$bad_w=~ s/\r|\n//g;
$msg=~ s/$bad_w/[цензура]/g; #замена матов в сообщении
$nick=~ s/$bad_w/[цензура]/g; #замена матов в нике
}
Получается, что переменная $bad_w - это каждая строка из массива @bad_w, то есть корень слова-мата, везде, так как используется глобальный модификатор шаблона /g, заменяется на "[цензура]". Вот, в принципе, и всё с этим.
•Часть вторая. Вешаем баны.
Итак, маты мы убрали. Но существуют такие люди, которые любят пофлудить, пооффтопить и позаниматься прочей гадостью. Заменять такую гадость вышеизложенным способом, естественно, нерационально. Проще закрыть доступ к гостевой таким людям. Нет, пусть они читают сообщения и кусают локти, а сообщения они добавлять не смогут. Сейчас я покажу, как это сделать.
Для начала, узнаем IP-адрем заходящего в вашу гостевую книгу. В этом нам поможет стандартная переменная окружения в perl:
$ip = $ENV{'REMOTE_ADDR'};
Затем, нам опять же надо создать текстовой файл, например, bans.dat, в котором построчно прописать те IP-адреса, добавления сообщений с которых нежелательно.
Создав подобный файл, перенесем все IP-адреса, прописанные там в массив, например, в @bans:
open BANS, "$bans";
@bans = ;
close BANS;
Теперь будем сравнивать каждый IP-шник из файла с переменной $ip, используя циклы foreach и if и если забаненный IP будет равен текущему IP, присвоим какой-нибудь переменной, например $ok, какое значение, например "BAD":
foreach $ban (@bans){
$ban=~ s/\r|\n//g;
if ($ip eq $ban){
$ok = "BAD";
print "";
}
}
И теперь, при добавлении этого сообщения, если переменная $ok будет равна "BAD", это сообщение добавляться не будет. Для этого, в условиях добавления сообщения, напишите примерно так:
if ($ok ne "BAD"){#добавляем сообщение}
•Часть третья. Защита от флуда на F5.
Теперь мы защитимся от флуда на обновление страницы. Хоть и можно добавить адрес флудера в список банов, очищать гостевую от флуда не всегда приятно, так ведь?
Итак, сделаем так: при нажатии F5 (либо же кнопочки "обновить") после добавлении сообщения, это сообщение добавляется ещё раз, что, конечно же, нежелательно. Поэтому мы каждое новое сообщение при добавлении будем сравнивать с предыдущим, и, если оно будет равно ему, так же, как и во второй части, присвоим переменной $ok параметр "BAD". А что дальше делать с этой $ok я уже показал.Итак, приступим. Откроем файл, в котором хранятся сообщения гостевой и из последней строки, используя стандартную функцию языка split, вычислим последнее сообщение:
open FILE, "$file";
@abc = ;
close FILE;
($nick_last, $ip_last, $msg_last)= split(/;;;;;/, $abc[@abc-1]);
$msg_last=~ s/\r|\n//g;
Как вы уже, наверное догадались, все сообщения мы загрузили в массив @abc, потом из последней строки, $abc[@abc - 1], зная, что разделитель у нас между ником, IP-адресом и сообщением, узнали последнее сообщение - $msg_last. Теперь, используя цикл if, сравним последнее сообщение с добавляемым, и, если результат сравнения положителен, присвоим $ok значение "BAD":
if ($msg_last eq $msg){$ok="BAD";}
Дальше вы уже знаете, что делать, по примеру из второй части.
•Эпилог. Выводы и всё такое...
Надеюсь, вы убедились в том, что используя стандартные средства замечательного языка программирования perl, можно гораздо улучшить свою гостевую книгу и моя статья вам в этом помогла.Напоследок, хочу привести вам ещё несколько примеров, которые более мелкие и менее важные, чем предыдущие.
Предположим, что отписавшийся в гостевухе человек, забыл написать свой ник. Что ж, не беда, сделаем ему ник такой, какой удобен нам:
if ($nick eq ""){$nick = "Аноним";}
То есть, если параметр $nick пуст, присваиваем ему значение "Аноним".
Также можно сделать ограничение на количество вводимых символов в сообщении, чтобы слишком много не писали вам, используя функцию substr:
$msg= substr($msg, 0, 1024);
Теперь размер сообщения будет не больше килобайта, а то, что больше - будет обрезаться.И таких примеров может быть очень много, о всех в одной статье не расскажешь. Эта статья - лишь попытка доказать, что Perl - очень мощный и гибкий язык программирования, с помощью которого можно творить очень хорошие вещи. Попробуйте сами - это интересно, это затягивает.
Онанимус (23 мая 2011 10:02)
:
Создание сайта, дизайн, программирование, продвижение сайта... http://dsugar.com.ua
Онанимус (03 февраля 2011 15:50)
:
http://allteormeh.my1.ru/ все задачи решины, скачать полное собрание всех решонных задач из задачника яблонского, статика, киниматика и динамика http://yavkontakte.3dn.ru все программы, приколы, статусы, аватарки, графити, оформления, приколы и многое другое для вконтакте, также взломать вконтакте и повысить рейтинг вконтакте http://radio-online.ucoz.com/ слушать радио онлайн в интернете не скачивая ничего. Самые классные радиостанции росии и украины на одном сайте http://anekdotov.clan.su/ самые классные анекдоты в mp3 формате, скачать анекдоты в аудио формате и смеяться до потери пульса http://vk-status.clan.su/ самые классные, смешные, прикольные, грустные и такие разные статусы вконтакте, и также статусы для влюблённых! http://autoworld.at.ua тюнинг отечественных автомобилей, все последние новости в автомире. http://video-vkontakte.3dn.ru/ классные видеоролики вконтакте, прикольные видео ролики, смешные ролики вконтакт
Онанимус (20 января 2011 18:31)
:
Моссовая ручная рассылка обявлений на самые рейтинровые доски. Рассылка объявлений это приоритетная реклама. Вы можете продать как свою недвижемость или авто, так и любой другой товар. Это самый качественный инструмент рекламмы в интернете. В нашем каталоге задействованы как Украинские доски так и других стран. При указании в рассылке адреса сайта, примерный прирост посещаемости от 20 до 50-ти человек, в зависимости от тематики Заявите осебе на досках от 150 до 350 досок (или другое необходимое количество). Доски тщательно подобираются для каждой темы отдельно, исходя из последних рейтингов, доски с ТИЦ от 4800 и PR от 6.
Продажа электрокаминов, печей, порталов и аксессуаров. Установка, доставка бесплатно. Электрокамины Dimplex с эффектом живого пламени, электрокамины и аксессуары к ним. Широкий выбор электрокаминов Dimplex www.interkamin.ru
Онанимус (15 апреля 2009 13:39)
:
Читает: Прудовский И. Жанр: детектив Аудио кодек: MP3 Битрейт аудио: 96 кбит Время звучания: 9 часов 19 мин Описание: Роман "Статский советник" продолжает серию романов Бориса Акунина, объединенных в литературный проект "Приключения Эраста Фандорина", и начатых конспирологическим детективом "Азазель".
Памяти XIX столетия, когда литература была великой, вера в прогресс безграничной, а преступления совершались и раскрывались с изяществом и вкусом. Скачать sample: http://depositfiles.com/files/dw17tp99f
Бесплатно скачать/Free download аудиокнигу Борис Акунин. Статский советник (5 частей):
Онанимус (09 марта 2009 15:57)
:
Бизнес в интернете стал таким же многообещающим, как и в реальном мире. Мы сздадим вам сайт и расположим его на первых страницах популярных поисковиков. Москва.Создание корпоратиывных web-сайтов для малого и среднего бизнеса “под ключ” раскрутка, обслуживание, оптимальные цены и сроки, качественно. http://www.l-999.ru/
Онанимус (08 января 2009 21:12)
:
http://www.mpeg4.nightmail.ru/
Страничка для тех кто решил освоить понимание английского языка на слух.
На сайте вы можете приобрести диски с аудиокнигами на английском языке в формате Mp3.
Каждый DVD диск в формате Mp3 - это порядка 170 часов ценной и интересной практики!! Всего DVD дисков - 11. (Общее количество файлов, включая сериалы - 1315 Размер аудиокниг на английском языке в mp3 формате- 46,6 Гб)
Книги начитаны профессиональными дикторами, носителями языка. К части книг имеются электронные тексты на английском языке!
В коллекции представлены книги самого разнопланового уровня -как понимания, так и сфер интересов. Это фантастика, фэнтези, классика, детективы.
http://www.mpeg4.nightmail.ru/
Хотите выучить английский на уровне близком к уровню носителя языка?
Человек учится родному языку не по учебникам, а на слух, повторяя услышанные слова и фразы - это главный момент, который упускают многие авторы многих бесконечных плохих учебников. Учите язык так, как ребенок учится родному языку - на слух!
Тексты аудиокниг озвучены профессиональными актерами - носителями языка. Вы услышите все нюансы произношения, сможете оценить красоту английской речи. В памяти останется звучание слова в его подлинном варианте, с разными интонациями, не искаженное транскрипциями и акцентами.
Очень важным моментом является то, что Вы слышите слово в контексте, в составе готовой фразы.