Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Вопрос о работе скрипта


Автор: Goph 2.4.2003, 05:57
Подскажите почему может быть ошибка HTTP 500!
Установлен Apache/1.3.23
Значит есть index.html лежит в www
И есть скрипт registrar.cgi который обрабатывает данные переданные из index.html методом GET!
Когда просто запускаешь http://localhost/index.html выдает 404
А когда из html перелает в cgi ошибка HTTP 505!
А вот код index.html
<html><head><title>ffff</title></head>
<body>
<h2>Регистрационная страница Клуба любителей фантастики</h2>
Заполнив анкету, вы сможете пользоваться нашей электронной библиотекой.
<br>
<form method="get" action="/cgi-bin/registrar.cgi">
<pre>
Введите регистрационное имя: <input type="text" name="regname">
Введите пароль: <input type="password" name="password1" max-
length=8>
Подтвердите пароль: <input type="password" name="password2" max-
length=8>
</pre>
Ваш возраст:
<input type="radio" name="age" value="lt20" checked>До 20
<input type="radio" name="age" value="20_30">20-30
<input type="radio" name="age" value="30_50">30-50
<input type="radio" name="age" value="gt50">Старше 50
<br><br>
На каких языках читаете:
<input type="checkbox" name="language" value="russian" checked>русский
<input type="checkbox" name="language" value="english">английский
<input type="checkbox" name="language" value="french">французский
<input type="checkbox" name="language" value="german">немецкий
<br><br>
Какой формат данных является для вас предпочительным
<br>
<select name="format" size=2>
<option selected value="HTML">HTML
<option value="Plain text">Plain text
<option value="PostScript">PostScript
<option value="PDF">PDF
</select>
<br><br>
Ваши любимые автора:
<br>
<textarea name"wish" cols=40 rows=3>
</textarea>
<br><br>
<input type="submit" value="OK"> <input type="reset" value="Отменить">
</form>
</body>
</html>
А вот registrar.cgi
#!Perl
print "Content-type:text/html\n\n";
$mathod = $ENV{'REQUEST_METHOD'};
if ($method eq "GET") {
$form_data = $ENV{'QUERY_STRING'};
}
else {
read (STDIN, $form_data, $ENV{'CONTENT_LENGTH'});
}
$form_data =~ s/%(..)/pack ("C", hex ($1))/eg;
$form_data =~ tr/+/ /;
@pairs = split (/&/, $form_data);
foreach $pair (@pairs) {
($name, $value)=split(/=/,$pair);
$FORM{$name}=$value;
}
if (!$FORM{'regname'} || !$FORM{'password1'}) {
print<<goback
<html>
<head><title>Неполные данные</title></head>
<body><h2>Извини, Вы пропустили обязательные данные</h2>
<br>
<a href="http://localhost/index.html">Попробуйте еще раз,
пожайлуста</a>
</body>
</html>
goback
;}
elsif ($FORM{'password1'} eq $FORM{'password2'}) {
print<<confirmation
<html>
<head><title>Поздравляем!</title></head>
<body><h2>Поздравляем!</h2><br>
Ваша регистрация прошла успешно. Вы можете пользоваться нашей библиотекой. Спасибо за внимание.
</body>
</html>
confirmation
:}
else {
print<<new_form
<html><head><title>Ошибка при ввводе пароля</title></head>
<body><h3>Введенные Вами значения пароля не совпадают
<br><form method="get" action="/cgi-bin/registrar.cgi">
<pre>
Введите пароль: <input type="password" name="password1">
Подтвердите пароль: <input type="password" name="password2">
</pre>
new_form
;
foreach $key (keys %FORM) {
if ($key ne "password1" && $key ne "password2") {
print "<input type=\"hidden\" name=$key value=$FORM{$key}>\n";
}
}
print<<EndOfHTML
<br><br>
<input type="submit" value="OK"> <input type="reset"
value="Отменить">
</form></body></html>
EndOfHTML
;}
Подскажите!!!!!
СПАСИБО!!!!

Автор: acp 2.4.2003, 08:16
Можеть быть почитать хоть немножечко документации по Апачу?

1. По дефолту, директория, куда кладутся документы называется htdocs, а никак не www. Скорее всего, ты не туда кладёшь... (если не менял конечно)

2. Есть такой файлик в одной из поддиректорий апача logs\error.log вот там написано, что конкретно у тебя глючит...

3. Нечитабелен совершенно твой код. Может его лучше было бы вставить как "[code ]"?

Автор: HalkaR 2.4.2003, 16:29
1. В принципе можно попробовать писать не localhost а 127.0.0.1. Но скорее всего у тебяя действительно не сконфигурирован сервер.
2. 505 это что за ошибка? У меня после установки 2-ого Апача скрипты стали запускаться откуда не попадя.

Автор: Goph 2.4.2003, 22:16
Да ну просто ошибка в скрипте!
smile.gif smile.gif smile.gif

Автор: NightGoblin 13.4.2003, 10:24
Дык посмотри в логах апачи - /etc/httpd/logs/error_log - там должно быть сообщение об ошибке, сам по себе код 500 тебе, само собой, ничего не скажет... Кстати, правда, что за 505? или это очепятка? smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)