Братик охуенное принес!
Маленькая заметка о редиректе средствами PHP.
Редтрект в PHP осуществляется с помощью функции header(), и в ее использовании есть небольшая проблема. Она должна быть вызвана ДО любого вывода текста, т.е. до вывода любых тегов, текста, и т.д.
Можно не бояться за то, что текст, выведенный после функции header() пользователь вообще не увидит. Увидит, если установить нужный параметр — время до редиректа, например, так вот:
header( 'Refresh: 5; url=http://natribu.org' );
Цифра 5 указывает на время в секундах, которое пройдет перед тем, как пользователь будет перенаправлен на далее указанный адрес (в данном случае http://natribu.org, хехе).
Следующий код вызовет ошибку:
<?php echo "Вы будете посланы нахуй через 5 секунд"; header( 'Refresh: 5; url=http://natribu.org' ); ?>
Warning: Cannot modify header information — headers already sent by […]
А следующий код сработает правильно:
<?php header( 'Refresh: 5; url=http://natribu.org' ); echo "Вы будете посланы нахуй через 5 секунд"; ?>

Через 5 секунд:

Две и более кнопки submit в форме HTML. Обработка на PHP.
Случилась тут небольшая задачка, как обработать две и более кнопок submit в HTML-форме, причем желательно без помощи JS и иных ухищрений, т.е. есть, например, такая форма:

Надо выяснить (на сервере), какую кнопку нажал пользователь.
На самом деле (ну если никто не поизвращался над браузером, т.е. клиентом) в отправленном серверу запросе POST будут только параметры нажатой кнопки. Если задать каждой кнопке уникальное имя, то можно будет отследить, какая кнопка была нажата, и, соответственно, обработать это.
Создадим тестовую форму multibutton.html:
<html> <head> <meta http-equiv='Content-Type' content='text/html; charset=utf-8'> <title>Multibutton 'Send' Test</title> </head> <body> <center> <form action='multibutton.go.php' method='POST'> <b>Press a button</b></br> <input type='text' name='testtext' value='Test Text'></br> <input type='submit' name='button1' value='Button #1'> <input type='submit' name='button2' value='Button #2'> <input type='submit' name='button3' value='Button #3'> </form> </center> </body> </html>
И напишем скрипт-обработчик multibutton.go.php:
<?php
$buttonmessage="<center><b>Perssed button:</br>#";
//Проверка кнопок
if (isset($_POST['button1']))
{
$buttonmessage.="1";
}
if (isset($_POST['button2']))
{
$buttonmessage.="2";
}
if (isset($_POST['button3']))
{
$buttonmessage.="3";
}
echo $buttonmessage."</br>";
echo "Test text value: '".$_POST['testtext']."'</b></br></br>";
echo "<b>----- Output $_POST array: ----</b></br><code><pre>";
print_r ($_POST); echo "</br></pre></code>";
echo "<b>-------------------------------</b></center>";
?>
Если в массиве $_POST будет найден элемент button1 — обрабатываем нажатие кнопки #1 (if (isset($_POST['button1']))), аналогично поступаем с другими кнопками. Текстовое поле — исключительно для теста, можно вписывать любое значение, оно будет показано пользователю.
Для наглядности выводится содержимое массива $_POST:
print_r ($_POST);
Получим следующее:
Нажата кнопка #1:

Нажата кнопка #2:

Нажата кнопка #3:

Можно объединить создание формы и вывод результата в единый скрипт: см. код на PasteBin
«Хроники пьяного панка. Часть 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. Примеры использования.
Сразу оговорюсь, это учебные примеры. В ближайшее время я вернусь к теме и покажу, как использовать каптчу «на местности», т.е. встроить ее в работающий движок сайта или его часть. А тут пока примеры относительно скорее умозрительные, что называется, из учебника.
Если кто-то вдруг совсем не знает, что это такое, то в конце заметки есть ссылка на источник, ну или можно в поисковик сходить.
Код тестового скрипта вполне неплохо обкомментирован, поэтому особых пояснений не требует. Если уж возникнут вопросы — задавайте, постараюсь ответить.
Механизм сессий на самом деле не всегда удобно использовать, например, если не хочется возиться с уже продуманными умными людьми сессиями готового сайтового движка, а свою каптчу встроить хочется. В таком случае просто перекладываем всю работу на cookie, создаваемые и удаляемые по нашему хотению:
Тут поясню лишь один момент, установку самих 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 своими руками
Копии