![]() |
Perl Разбор формы
ищется дока или готовые примеры для разбора ХТМЛ-форм на Перле в виде списка-название полей формы+ типы полей формы
|
дык это на рег выражениях написать можно, довольно не сложно
|
один из самых-самых популярных perl-скриптов этого типа: http://www.scriptarchive.com/formmail.html
настраивается за пять минут, работает на ура. |
Тип поля ввода на стороне сервера узнать невозможно. Тип указывается для требуемого отображения на странице. Из формы на сервер передаются только имена полей и их содержимое в виде последовательностей байтов.
Как можно получить данные в скрипте? Например так. #!/usr/bin/perl use CGI qw(param); my $var_1 = param('name'); my $var_2 = param('color); Это будет работать независимо от того, каким методом отсылаются данные - POST или GET. Best Regards. |
Цитата:
my $buffer=""; if ($ENV{'CONTENT_LENGTH'}) { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } if ($buffer eq "") {$buffer=$ENV{'QUERY_STRING'}} chomp($buffer); @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $in{$name} = $value; } В результате получаем хеш-массив %in, к полям которого обращаемя так: $in{'something'} де something - это имя поля в форме ХТМЛ |
Код Goryn'а будет работать быстрее.
|
Да хотел спросить в папке cgi-bin что то должно быть изначально? Если да то что?
|
ничего
|
А что надо прописать чтобы работали скрипты.
|
надо чтобы сервер разрешал использование..... а что за ошибка?
|
Если скрипты не исполняются и стоит Апач, то в конфигурацию сервера добавить надобно
ScriptAlias /cgi-bin/ /путь_к_папке_со_скриптами/ Если все это добро вдобавок работает на Юникс-подобных системах надо проследить, чтобы переводы строк в запускаемых скриптах были не виндовыми, а юниксовыми. |
Stasik Ошибка 500
water Apache1.3.27 Это мне надо создать файл srm.conf чтобы в нем было прописано ScriptAlias /cgi-bin/ /usr/http://www.storm666.vnet.ee/cgi-bin/. Или я чего то не понимаю. |
В конфиге, судя по всему, все прописано правильно. Internal Server Error может вылетает из-за ошибки работы скрипта.
Проверь имеется ли первая строчка типа #!/usr/bin/perl Если переводы строк виндовые, эту строчку сервер может не понять. Или, может, Перл сидит в другом каталоге. Может быть ты забываешь первым делом выводить HTTP-заголовок (print "Content-type: text/html\n\n";) Советую почитать логи сервера. |
Ошибка 500 выдается во всех случаях ошибок выполнения скриптов.
:idea: Если у тебя есть доступ к log-файлам , то посмотри файл ошибки. Он, как правило, называется error.log. Это обычный текстовый файл, куда пишутся все ошибки - можно посмотреть, где напортачил. Так же проверь, правильно ли ты установил права доступа. Для исполняемых скриптов они должны быть rwx-rx-rx |
Goryn [Mon May 5 21:40:43 2003] [error] [client 213.XXX.XXX.XXX] File does not exist: /www/storm666.vnet.ee/cgi-bin/index.htm
Так же проверь, правильно ли ты установил права доступа. Для исполняемых скриптов они должны быть :я вообще их не устанавливал не знаю где. Подскажите. |
Цитата:
Например chmod 755 script.pl Иначе никак. Так ты под юниксом все-таки? |
:winkgrin: :ржать: :xex: :rotate: :biggrin: :gigi:
:чего: -:че:- Это то, что я думаю по поводу index.htm в скриптовой папке. Запиши себе на листке 100 раз и повесь на стенку перед носом: html, php, shtml, js, swf, java, архивы и прочую лабудень ты выкладываешь в одной папке, которая, как правило, так и называется html В скриптовую папке cgi-bin ты выкладываешь ТОЛЬКО СКРИПТЫ и файлы, с которыми они работают НА СТОРОНЕ СЕРВЕРА. По поводу прав доступа куда других постов, например этот |
#!/usr/bin/perl
print "Content-type:text/html\n\n"; print "<html><head><title>HELLO</title></head>\"; print "<body>\n"; print "<h2>Hello</h2>\n"; print "</body></html>\n\";вот такой скрипт лежит в папке cgi-bin и имеет расширение!*.cgi и больше НИЧЕГО. |
print "Content-type: text/html\n\n";
|
Stasik
Нет не пашет.... |
Короче так: на сервере лежат 3 папки cgi-bin(в ней этот скрипт:#!/usr/bin/perl
print "Content-type: text/html\n\n"; print "<html><head><title>HELLO</title></head>\"; print "<body>\n"; print "<h2>Hello</h2>\n"; print "</body></html>\n\";) html ( в ней папки моей странички, index.html, и файл info.php-пустой) images ( в ней картинки) и два файла access_log и error_log. Всё больше ничего нет. В браузере набираю http://www.storm666.vnet.ee/cgi-bin/hello.cgi и результат: |
#!/usr/local/bin/perl
print "Content-type: text/html\n\n"; print "<H1>Hello World</H1>\n"; мож у тя перл лежит не там |
А где perl должен быть? В какой папке? Может у меня его вообще нет?
|
Запусти скрипт и сразу почитай файл error_log. Там в последних строчках написана причина ошибки.
Где лежит Перл - это вопрос к хостеру, а не к нам. |
[Wed May 7 20:40:14 2003] [error] (13)Permission denied: exec of /www/storm666.vnet.ee/cgi-bin/hello.cgi failed
[Wed May 7 20:40:14 2003] [error] [client 213.35.134.161] Premature end of script headers: /www/storm666.vnet.ee/cgi-bin/hello.cgi это всё что написано |
chmod 755.....
|
Цитата:
755 в некоторых с помощью непосредственных атрибутов rwx-rx-rx |
Спасибо ребята я разобрался, оказывается на хосте не были проставлены правильно разрешения. Вот: http://www.storm666.vnet.ee/guest/index.php
|
| Часовой пояс GMT +4, время: 09:15. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.