Forum Webscript.Ru
Программирование => Perl => Тема начата: glebushka от 02 Апреля 2002, 22:16:32
-
Вот собственно сочинённый отрывок скрипта, который выводит форму авторизации, проверяет введённые данные с файлом, и в зависимости от этого печает "1" или "0", но это только мои мечты, а на самом деле он выдаёт ошибку: "внутренняя ошибка на сервере".
Помогите!!!!!!
Замучался ведь! Ну не вижу я ошибки!
1: #!/usr/bin/perl
#подключаем модуль, поясните плиз, то, что после use CGI
2: use CGI qw(:standard);
3: $mycgi=new CGI; #Создаём объект CGI
#берём данные из формы, запихиваем в переменные
4: $do=$mycgi->param("do");
5: $loginEnt= lc ($mycgi->param("login"));
6: $passwordEnt=lc ($mycgi->param("password"));
7: if(!$mycgi->param){"если данных не переданы, то выдаём #форму
8: print $mycgi->header,$mycgi->start_html(\'Форма\');
9: print <10:
15: HTML_password
16: print $mycgi->end_html; # конец html-документа
17: }else#а если форма уже заполнена, то
18: {
19: $path="абсолютный путь к файлу с рег. инфой";
20: open(DAT,"$path")|| die("Невозможно открыть файл$path");
21: my @lst=; # Помещаем строки в массив
22: for(my $i=@lst-1;$i>=0;$i-=9){#в файле не только логины и #пароли но и много другой инфы
23: if ($loginEnt eq $lst[$i-7] and $passwordEnt eq $lst[$i-6]){
24: $authorized = 1;
25: $login = $loginEnt;
26: print "1";
27: }else {
28: $authorized = 0;
29: print "0"
30: }
31: }
32: close(GB_DAT);#Закрываем файл
33: }
Ну вроде должно работать? Почему не работает?
-
if(!$mycgi->param){"если данных не переданы, то выдаём #форму
if(!$mycgi->param){ #если данных не переданы, то выдаём форму
print <
print <<"HTML_password";
-
Первое опечатка, не такой я параноик как кажусь:), не делаю столько комментариев, а второе ща исправлю, но работать оно не работает, это точно - форму выводит, а кактолько жму ОК - ошибка...
-
Наглядный пример с учётом замечаний Chs
http://www.glebushka.hut.ru/cgi-bin/hot/proba1.cgi
Ну не работает он!
-
print "1";
print "Content-type: text/plain\\n\\n";
print "1";
print "0";
print "Content-type: text/plain\\n\\n";
print "0";
-
Chs
Да, спасибо, ошибку не выдаёт, НО
Работает всё равно не правильно.
см тот же адрес, я обновил с учётом твоих замечаний.
Кстати, для интереса
Во всех полях набери цифру 1 - (правильные логин и пароль)
Он такое пишет...
-
Да, спасибо, ошибку не выдаёт, НО
Работает всё равно не правильно.
Ну логика кривая. :)
if ($loginEnt eq $lst[$i-7] and $passwordEnt eq $lst[$i-6]){
Ты сможешь объяснить что это должно делать? :)
Формат файла паролей в студию! :))
-
Ну логика кривая.
Не может того быть!
Ты сможешь объяснить что это должно делать?
Угу.
Ща попробую.
Формат файла паролей ТХТ.
Вообще его можно посмотреть по адресу
http://www.glebushka.hut.ru/cgi-bin/hot/admin.cgi
Логин 1
Пароль 1
Убедительная просьба ничего там не править!
Там один пробел в конце строки и всё путается, получше чем в генераторе случайных чисел.
А логику я проверял по адресу:
http://www.glebushka.hut.ru/cgi-bin/hot/tmplog.cgi
Там внизу связка логин-пароль, если правильно выводит, значит и здесь правильно, копировать - вставить, как никак...
Только там я просто выводил:
print ""; print " | Логин $lst[$i-7]
";
print "Пассворд $lst[$i-6]
";
print "
";
-
Спасибо Chsу за наше счастливое детство:)))))))))))))
ОДНОЗНАЧНО. Работает. Вот работающий скрипт, (выкладываю для таких же ламеров как я, перед которыми встанет таже трабл). С учётом добавлений и исправлений
Chs, код:
#!/usr/bin/perl
use CGI::Carp qw (fatalsToBrowser);#показывать ошибки - в окончательной версии не забыть убрать.
#подключаем модуль
use CGI qw(:standard);
$mycgi=new CGI; #Создаём объект CGI
#берём данные из формы, запихиваем в переменные
$do=$mycgi->param("do");
$loginEnt= lc ($mycgi->param("login"));
$passwordEnt=lc ($mycgi->param("password"));
if(!$mycgi->param){
print $mycgi->header,$mycgi->start_html(\'Форма\');
print <<"HTML";
HTML
print $mycgi->end_html; # конец html-документа
}else#а если форма уже заполнена, то
{
$path="/home/g/glebushka.hut.ru/WWW/loghot/user.jpg";
open(DAT,"$path")|| die("Невозможно открыть файл$path");
my @lst=; # Помещаем строки в массив
chomp @lst;
$authorized = 0;
for(my $i=@lst-1;$i>=0;$i-=9){#в файле не только логины и пароли но и много другой инфы
if (($loginEnt eq $lst[$i-7]) and ($passwordEnt eq $lst[$i-6]))
{
$authorized = 1;
$login = $loginEnt;
last;
}
}
print "Content-type: text/plain\\n\\n";
print $authorized;
close(GB_DAT);#Закрываем файл
}
ЗЫ. Ну вот вроде всё...
всё работает:)
-
http://glebushka.hut.ru/loghot/user.jpg
открой браузером - кушает только так :)
-
открой браузером - кушает только так
Да №%%::;:;!!!!!!!!!
ПОЧЕМУ?????????????
Он должен открывать как картинку!
За что такая несправедливость?