The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

CGI

   Корень / Программисту и web-разработчику / Perl / CGI

----* Какую простейшую защиту от сабмита формы поисковым или спам-роботом можно предпринять.   [комментарии]
 
В связи с участившимися случаями появления 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"-->
 
----* Еще один способ отладки CGI скриптов на перле   Автор: Vovik Alyekhin  [обсудить]
 
use CGI::Debug;
Брать соответственно на cpan-е
 
----* Как добится показа русских букв в JavaScript (перекодировка в UTF)   [обсудить]
  Для показа русских букв в JavaScript блоке нужно перекодировать их в UTF: sub koi2utf{
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Что использовать для отладки CGI если нет доступа к логам сервера   [обсудить]
 
use CGI::Carp qw (fatalsToBrowser);
 
----* Как закодировать и раскодировать строку %XX в URL.   [комментарии]
 
Закодировать:
$toencode =~ s/([^a-zA-Z0-9_.-])/uc sprintf("%%%02x",ord($1))/eg;
Раскодировать:
$todecode =~ s/%(..)/pack("c",hex($1))/ge;
 

 Версия для печати




  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor