Forum Webscript.Ru

Программирование => Perl => Тема начата: glebushka от 02 Апреля 2002, 22:16:32

Название: Скрипт, проверяющий логин и пароль.
Отправлено: 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:

11:
12: Имя:
13: Пароль:
14:

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: }
Ну вроде должно работать? Почему не работает?
Название: Скрипт, проверяющий логин и пароль.
Отправлено: Chs от 02 Апреля 2002, 22:29:19
Цитировать
if(!$mycgi->param){"если данных не переданы, то выдаём #форму

if(!$mycgi->param){ #если данных не переданы, то выдаём форму
Цитировать
print <

print <<"HTML_password";
Название: Скрипт, проверяющий логин и пароль.
Отправлено: glebushka от 02 Апреля 2002, 22:34:40
Первое опечатка, не такой я параноик как кажусь:), не делаю столько комментариев, а второе ща исправлю, но работать оно не работает, это точно - форму выводит, а кактолько жму ОК - ошибка...
Название: Скрипт, проверяющий логин и пароль.
Отправлено: glebushka от 02 Апреля 2002, 22:45:50
Наглядный пример с учётом замечаний Chs
http://www.glebushka.hut.ru/cgi-bin/hot/proba1.cgi
Ну не работает он!
Название: Скрипт, проверяющий логин и пароль.
Отправлено: Chs от 02 Апреля 2002, 23:00:56
Цитировать
print "1";

print "Content-type: text/plain\\n\\n";
print "1";
Цитировать
print "0";

print "Content-type: text/plain\\n\\n";
print "0";
Название: Скрипт, проверяющий логин и пароль.
Отправлено: glebushka от 02 Апреля 2002, 23:41:35
Chs
Да, спасибо, ошибку не выдаёт, НО
Работает всё равно не правильно.
см тот же адрес, я обновил с учётом твоих замечаний.
Кстати, для интереса
Во всех полях набери цифру 1 - (правильные логин и пароль)
Он такое пишет...
Название: Скрипт, проверяющий логин и пароль.
Отправлено: Chs от 02 Апреля 2002, 23:55:19
Цитировать
Да, спасибо, ошибку не выдаёт, НО
Работает всё равно не правильно.

Ну логика кривая. :)
 if ($loginEnt eq $lst[$i-7] and $passwordEnt eq $lst[$i-6]){
Ты сможешь объяснить что это должно делать? :)
Формат файла паролей в студию! :))
Название: Скрипт, проверяющий логин и пароль.
Отправлено: glebushka от 03 Апреля 2002, 00:16:44
Цитировать
Ну логика кривая.

Не может того быть!
Цитировать
Ты сможешь объяснить что это должно делать?

Угу.
Ща попробую.
Формат файла паролей ТХТ.
Вообще его можно посмотреть по адресу
http://www.glebushka.hut.ru/cgi-bin/hot/admin.cgi
Логин 1
Пароль 1
Убедительная просьба ничего там не править!
Там один пробел в конце строки и всё путается, получше чем в генераторе случайных чисел.
А логику я проверял по адресу:
http://www.glebushka.hut.ru/cgi-bin/hot/tmplog.cgi
Там внизу связка логин-пароль, если правильно выводит, значит и здесь правильно, копировать - вставить, как никак...
Только там я просто выводил:
print "Логин $lst[$i-7]";
print "Пассворд $lst[$i-6]";
print "
";
print "
";
Название: Спасибо!!!
Отправлено: glebushka от 03 Апреля 2002, 22:32:44
Спасибо 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);#Закрываем файл
}
ЗЫ. Ну вот вроде всё...
всё работает:)
Название: Скрипт, проверяющий логин и пароль.
Отправлено: Боря Елкин от 03 Апреля 2002, 23:39:54
http://glebushka.hut.ru/loghot/user.jpg
открой браузером - кушает только так :)
Название: Скрипт, проверяющий логин и пароль.
Отправлено: glebushka от 04 Апреля 2002, 00:28:25
Цитировать
открой браузером - кушает только так

Да №%%::;:;!!!!!!!!!
ПОЧЕМУ?????????????
Он должен открывать как картинку!
За что такая несправедливость?