|
Какую простейшую защиту от сабмита формы поисковым или спам-роботом можно предпринять. |
[комментарии]
|
| В связи с участившимися случаями появления web-роботов занимающихся сабмитом форм, рекомендую:
if ( ($ENV{"HTTP_REFERER"} !~ /sitename\.ru/i) ||
($ENV{"HTTP_USER_AGENT"} !~ /(netscape|mozilla|links|lynx|opera|msie|konqueror)/i) ){
die "Несанкционированный запрос !";
}
|
|
|
|
|
В чем могут быть причины не выставления Cookie из скрипта. (доп. ссылка 1) |
[обсудить]
|
| 1. Ограничение на максимально возможное число кук или размер куки, у каждого
браузера свой предел (лучше не больше 20).
2. Ошибка в указании (или не указание) времени жизни Cookie.
3. В параметрах указан неправильный domain (например не текущий).
4. Запуск .cgi скрипта не напрямую, а через SSI (из .shtml), соответственно cookie
в заголовке воспринята не будет, выставлять нужно используя JavaScript.
|
|
|
|
|
Как считать список установленных cookies в хеш. |
[обсудить]
|
| sub load_cookies{
local (*cook_arr) = @_;
foreach (split(/\;\s*/,$ENV{'HTTP_COOKIE'})){
my ($cur_key, $cur_val) = split(/\=/);
$cook_arr{"$cur_key"} = $cur_val;
}
}
load_cookies(*cooks); print $cooks{"cook_name"};
|
|
|
|
|
Заметка по установке хэдеров из cgi |
Автор: Yuri A. Kabaenkov
[обсудить]
|
| При установки хэдера из cgi (Location,Content-Type, etc) многие пишут
(print "Location: http://test.com\n\n";), но данную запись(\n\n) могут
не понять некоторые системы типа Mac и т.д.
Правильней отправлять хэдер как:
print "Location: http://test.com\r\n\r\n";
Обратите внимание на (\r\n\r\n)
|
|
|
|
|
Как в SSI передать параметры скрипту используя метод POST |
[комментарии]
|
| <!--#exec cgi="something.cgi" -->
Для метода GET: <!--#include virtual="/cgi-bin/test.cgi?$QUERY_STRING"-->
|
|
|
|
|
|
Как добится показа русских букв в JavaScript (перекодировка в UTF) |
[обсудить]
|
| Для показа русских букв в JavaScript блоке нужно перекодировать их в UTF:
sub koi2utf{
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
|
Как закодировать и раскодировать строку %XX в URL. |
[комментарии]
|
| Закодировать:
$toencode =~ s/([^a-zA-Z0-9_.-])/uc sprintf("%%%02x",ord($1))/eg;
Раскодировать:
$todecode =~ s/%(..)/pack("c",hex($1))/ge;
|
|
|
|