«Хроники пьяного панка. Часть I Город-ге(мор)рой.»

От редактора:
Панкарь решил обнародовать свой старый дневник, говорит, чтоб не пропало, ибо у него какую-то дрянь в организме обнаружили.
Материалы датируются 2005-2009 г.г., опубликованы с разрешения автора, моя редактура минимальная — вырезаны в стиле SCP имена, фамилии и клички. Предоставляем слово автору:

Когда произошли события я находился в… естественно в компьютерном клубе в интенете на форуме, откудаво об етном и узнал, весть со скоростью черт-знает-чего разнеслась по интенету и попала на скиновские сайты и ессно форум наполнился вагоном провокаторов, да и у народа накипело…. Собсно активные события начались с сообщения, что народ планирует «Сделать Чайку и рынок непригодными к дальнейшему использованию». Хачеги не стали особо ничего ждать и на следующую же ночь после драки съебали с рынка. Первая ночь прошла более менее спокойно, из активных действий была только разгромлена палатка с арбузами в районе вокзала, да спизжено неимоверное количество оных, оставленными хачегами на рынке. В этом даже поучаствовал гитарист нашей панк-группы ███████. Арбуз мы с удовольствием сожрали на тусовке. На следующий день я съебал к ██████ на дачу, где мылся в бане, ездил на рыбалку, в общем настроение было буддистски-спокойное. На форуме узнал перед отъездом, что в воскресенье будет сход жителей у рынка. По сотовому было сообщено от одного знакомого мента, что в город едет ОМОН, а в воскресенье позвонил Агент ████ и спросил, не знаю ли я чего-нить интересного. Я ессно подорвался в город, надеясь и узнать что-нить, и нарезать видео на клип, а возможно и исполнить тайную мечту — попасть на телеканал НТВ. Как выяснилось позже — попал, но не на телеканал… Приехал, к тому времени сход уже закончился, старшие разошлись по домам, а более молодые и более подогретые пивом решили пойти разносить Чайку. Когда я приехал, то увидел как кидают камни в 4 магазин, позвонил своим, они уже были практически в эпицентре событий, я ессно пошел к Чайке. Ее уже громили, оттудаво потихоньку выносили пиво, если честно говорить, наша тусовка тоже, бля, постаралась, вынесли ящик Охоты Крепкой. Расположился я с ребятами у часов напротив Чайки и стал смотреть «кино» и пить пиво (трофейное), потом подпил, пошли с ███████ во дворы песни орать, сходили, посмотрели как громят Фламинго и вернулись к Чайке, и тут на толпу пошли отряды ОМОНА, меня где-то за банком они настигли, я получил немного «демократизаторов» и эти суки спиздели у меня неделю назад купленный NOKIA 3310 вместе с симкартой, посему номер у меня изменился… Я — на оставшуюся трубу и ██████ звонить, товарисч пришел, забрал меня, мы к какой-то бабе пошли на хату, но не дошли, где-то по дороге еще пива попили, потом пошел ОМОН, мы опять где-то во дворы спрятались, я ██████ на всякий случай трубу отдал, а потом ОМОН нас все-таки настиг, гитариста ████ и ██████ взяли, а я второй раз получил демократизаторов, потом я из-за своего подпития плохо помню…. вписался в тачку к каким-то бандитоподобным личностям, которые, правда поделились со мной водкой, а потом нас опять (уже последний раз) настиг ОМОН, после чего мы, наконец, объезжая кордоны и прочую жопу отправились на ███████.
Итог: потеряные мобильные телефоны (один правда нашел Агент ████), 3000 р (я в Чайке был сисадмином и должен был в понедельник идти делать там комп), у ██████ 5 суток+потерянный коммуникатор (КПК с функцией телефона) стоимостью 20 000 р. =( И просто непередаваааемые очучения. В настоящее время битва за Кондпогу перенеслась в интернет и окончилась флудом великим и первыми местами в рейтингах mail.ru для кондопожского форума…
Далее все было спокойно, относительно…. Дописал гитару и бас на своем диске, апгрейдил между делом комп (1.7 GHz Seleron/512Mb/HDD 80GB/Video 128 Radeon 9600) и занимался пиением пива, но тут пришла…. СЕССИЯ.

Сентябрь 2006 года (прим. ред.)
Агент ████ — польско-украинский журналист, фигурирующий в некоторых записях, как Агент Оранж (дада, намек на этого цвета революции) или Лука Розенбург.

ASCII-каптча, каптча псевдографикой. Часть III. Примеры использования.

Сразу оговорюсь, это учебные примеры. В ближайшее время я вернусь к теме и покажу, как использовать каптчу «на местности», т.е. встроить ее в работающий движок сайта или его часть. А тут пока примеры относительно скорее умозрительные, что называется, из учебника.

Каптча и механизм сессий.

Если кто-то вдруг совсем не знает, что это такое, то в конце заметки есть ссылка на источник, ну или можно в поисковик сходить.

Код тестового скрипта вполне неплохо обкомментирован, поэтому особых пояснений не требует. Если уж возникнут вопросы — задавайте, постараюсь ответить.

Код на PasteBin

Использование cookie для проверки каптчи

Механизм сессий на самом деле не всегда удобно использовать, например, если не хочется возиться с уже продуманными умными людьми сессиями готового сайтового движка, а свою каптчу встроить хочется. В таком случае просто перекладываем всю работу на cookie, создаваемые и удаляемые по нашему хотению:

Код на PasteBin

Тут поясню лишь один момент, установку самих cookie. Делается это встроенной функцией PHP setcookie, полное описание которой вы можете найти в разделе источников в конце заметки.
Мне же понадобились только три параметра:
setcookie($name,$value,$expiredtime);
где:
$name — имя cookie
$value — передаваемое в cookie значение, сохраняемое на компьютере пользователя
$expiredtime — срок действия cookie, после его окончания cookie не будет обрабатываться сервером. Таким образом устанавливается максимальное время, данное пользователю на ввод кода каптчи.

В данном случае:

setcookie('mycaptchamd5',md5($captchacode),time()+300);

т.е. имя cookie 'mycaptchamd5', в качестве значения передается md5-хэш кода каптчи, а время действия устанавливается в 300 секунд (т.е. 5 минут).

Смотреть код или скачать готовый вариант

Код модуля ASCII каптчи на PasteBin
Пример с сессией
Пример с cookie
Цифры псевдографикой. Вариант 1
Цифры псевдографикой. Вариант 2

Скачать все с Mega.nz в одном архиве

Источники

Функция setcookie()
Разработка CAPTCHA своими руками
Копии

Предыдущие части

Часть I
Часть II

ASCII-каптча, каптча псевдографикой. Часть II. В которой генерируется каптча.

Итак, закончили мы на том, что нарисовали все цифры, создали массивы php с псевдографическими изображениями цифр и написали отладочную функцию, которая выводит конкретную цифру. Продолжаем!

Для начала условимся, то нашему злодею-хацкеру, распознающему каптчу, мы, хоть и ненамного, но усложним задачу: «пробельные» («пустые») символы в изображении каждой цифры, а также сами символы, изображающие цифру, будут выбраны случайно из заранее заданного набора. Зададим набор символов, изображающих цифру, в виде строки:

$pgstring="#$%@!?0"; //символы, из которых будут составлены цифры

Аналогично и для «пустых» символов:

$spstring="- "; //пробельные символы

Тут все зависит от вкуса, цвета и лично ваших глазок. Главное, чтобы в строке с возможными «пустыми» символами и в строке с возможными символами, изображающими цифру, не встретилось одинаковых символов, иначе при определенных условиях, пользователь вполне может получить вот такую вот гадость, вместо каптчи:

###### ###### ###### ###### ###### ###### ######
###### ###### ###### ###### ###### ###### ######
###### ###### ###### ###### ###### ###### ######
###### ###### ###### ###### ###### ###### ######
###### ###### ###### ###### ###### ###### ######

Заведем еще две переменные, которые будут хранить выбранные символы для «пробельных» и символов изображения:

$pgchar="";
$spchar="";

Пока просто оставим их пустыми, потом к ним еще вернемся.

Далее подробное описание скрипта с картинками и видео

Итого

В данный момент, мы имеем готовый include-модуль, формирующий код каптчи и ее псевдографическое изображение. В следующей части будут примеры ее использования.

Код каптчи

Смотреть на PasteBin

Начало здесь
Продолжение

ASCII-каптча, каптча псевдографикой. Часть I.

Сегодня будем рисовать каптчу. Причем не с помощью стандартных библиотек вывода графики (таких мануалов в сети более чем достаточно), а каптчу, отображаемую пользователю в виде псевдографики, т.е. изображения символов каптчи будут созданы из обычных числовых и буквенных символов. Для упрощения задачи примем следующее:

— В качестве символов, из которых будет создаваться изображение, будем использовать латинские буквы, цифры и знаки препинания. Можно, конечно, и китайскими иероглифами пользоваться, но не факт что пользователь сможет каптчу распознать и она у него не «поплывет».
— Сам код каптчи будет состоять только из цифр (ну вот лень мне было заморачиваться с буквами в ASCII-арт).

Плюсы:
+ Скрипт легко встраивается как медведевский будильник, в разные места в любое место, где нужна каптча.
+ Не требует библиотек обработки изображений, дополнительных ранее нарисованных картинок и т.д., соответственно, будет работать даже на самом плохом хостинге, где библиотек типа ImageMagick может вообще не быть
+ Отображается даже в консольном (текстовом) редакторе типа lynx.
+ Почти не тратит трафик (текст же) и ресурсы сервера.

Минусы:

— Довольно легко ее распарсить автоматически, если не применять всякие дополнительные фишки, типа изменения количества строк и столбцов изображения. Их, к сожалению, в этом мануале не будет, но если кто-нибудь захочет вдруг, то я вернусь к этому вопросу.

В части первой займемся рисованием цифр. Конечно, человеку увлекающемуся ASCII-артом это нафиг не надо, можно сразу пропускать и переходить ко второй части. Кто не знает, что такое ASCII-арт вообще, тот может сходить в Википедию или Гугль, и ознакомиться с темой.

Я сам не великий ASCII-сенсей, так что использовал достаточно стандартную методу:

1. В любом простом текстовом редакторе (Блокноте, Notepad++, mcedit или редакторе FAR-а) нарисуем поле размером в X символов и Y строк каким-либо одним символом, например *, -, # или любым другим. Должно получиться что-то типа этого (я взял поле размером 6 x 5 символов):

------
------
------
------
------

2. Далее, нажимаем клавишу Insert, включаем режим замены и заменяем в этом поле символы - на какие-нибудь другие, так, чтобы получилось изображение определенной цифры, например:

-0000-
00--00
00--00
00--00
-0000-

Если кто-то ленивый, то можно поискать готовые цифры в Гугле, взять несколько черновой вариант здесь, готовый, используемый мною вариант здесь. Или можно вообще в последней части статьи скачать сразу весь архив. XD

Итак, у нас есть готовые изображения цифр, осталось лишь записать их в виде, доступном PHP.

Создаем массивы, содержащие псевдографические изображения цифр. Здесь и далее условимся, что в качестве «пустого» символа я использовал *, а в качестве символа для изображения цифры, знак $.
Код и некоторые пояснения
В следующей части создадим генератор кода каптчи и генератор ее ASCII-изображения.

Форма обратной связи для WordPress, возвращаясь к напечатанному.

Или как я избавился от слишком назойливой опеки антиспама на сервере.

Не так давно поднимал вопрос о форме обратной связи для сайта на WordPress [Копия].

Некий анон хотел меня затроллить, но, как обычно, мало того, что написал полнейшую чепуху, которая не работает, так еще и случайно помог вскрыть баг (хотя, скорее опцию) почтового сервера, которая, правда, лично мне мешала.

Ситуация такая: антиспам финского сервера (вполне оправданно, кстати) отправляет в спам письма с доменов .ru (mail.ru и yandex.ru точно), .kz, .by и некоторых не связанных с ГОРФ, типа .tk

Но, со спамом я неплохо справляюсь самостоятельно, и лишняя опека со стороны умной машины мне не нужна. На случай, мало ли у кого возникает аналогичная проблема, вот рецепт:

Находим в скрипте mail.php строчку:

$mes = "Имя: ".$name."\n\nТема: " .$sub."\n\nСообщение: ".$message."\n\n";

И меняем ее на:

$mes = "Имя: ".$name."\n\nТема: " .$sub."\n\nСообщение: ".$message."\n\n"."E-mail to answer: $email\n\n";

Ниже меняем в строке

$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");

$email на $address. Должно получиться:

$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$address");

Что этот код делает. Да все просто. Строка с сообщением ($mes) изменяется так, что адрес, который ввел пользователь в контактной форме, добавляется к тексту сообщения как простой текст. Параметры функции php mail изменяются так, что в заголовок письма вместо адреса пользователя, добавляется наш собственный адрес для приема сообщений из контактной формы. В результате мы получим сообщение, отправленное с нашего же адреса. Примерно как на скриншоте ниже:

Проблема с антиспамом решилась (сервер проверял только заголовки писем, а не указанные в тексте адреса), единственный минус — не ответить по нажатию соответствующей кнопки в почтовой программе, но тут уж, как говорится, шашечки или ехать.

Другой баг скрипта отправки почты, это то, что довольно легко его использовать автоматически и зафлудить почтовый ящик. Скоро расскажу, как побороть и эту беду.

Заметка в PDF