Автор Тема: Скрипт, проверяющий логин и пароль.  (Прочитано 4465 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Вот собственно сочинённый отрывок скрипта, который выводит форму авторизации, проверяет введённые данные с файлом, и в зависимости от этого печает "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

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Скрипт, проверяющий логин и пароль.
« Ответ #1 : 02 Апреля 2002, 22:29:19 »
Цитировать
if(!$mycgi->param){"если данных не переданы, то выдаём #форму

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

print <<"HTML_password";
2B OR NOT 2B = FF

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Скрипт, проверяющий логин и пароль.
« Ответ #2 : 02 Апреля 2002, 22:34:40 »
Первое опечатка, не такой я параноик как кажусь:), не делаю столько комментариев, а второе ща исправлю, но работать оно не работает, это точно - форму выводит, а кактолько жму ОК - ошибка...
Ну к чему все это, лучше бы водки выпили...

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Скрипт, проверяющий логин и пароль.
« Ответ #3 : 02 Апреля 2002, 22:45:50 »
Наглядный пример с учётом замечаний Chs
http://www.glebushka.hut.ru/cgi-bin/hot/proba1.cgi
Ну не работает он!
Ну к чему все это, лучше бы водки выпили...

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Скрипт, проверяющий логин и пароль.
« Ответ #4 : 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";
2B OR NOT 2B = FF

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Скрипт, проверяющий логин и пароль.
« Ответ #5 : 02 Апреля 2002, 23:41:35 »
Chs
Да, спасибо, ошибку не выдаёт, НО
Работает всё равно не правильно.
см тот же адрес, я обновил с учётом твоих замечаний.
Кстати, для интереса
Во всех полях набери цифру 1 - (правильные логин и пароль)
Он такое пишет...
Ну к чему все это, лучше бы водки выпили...

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Скрипт, проверяющий логин и пароль.
« Ответ #6 : 02 Апреля 2002, 23:55:19 »
Цитировать
Да, спасибо, ошибку не выдаёт, НО
Работает всё равно не правильно.

Ну логика кривая. :)
 if ($loginEnt eq $lst[$i-7] and $passwordEnt eq $lst[$i-6]){
Ты сможешь объяснить что это должно делать? :)
Формат файла паролей в студию! :))
2B OR NOT 2B = FF

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Скрипт, проверяющий логин и пароль.
« Ответ #7 : 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

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Спасибо!!!
« Ответ #8 : 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);#Закрываем файл
}
ЗЫ. Ну вот вроде всё...
всё работает:)
Ну к чему все это, лучше бы водки выпили...

Оффлайн Боря Елкин

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webmetr.pips.ru
Скрипт, проверяющий логин и пароль.
« Ответ #9 : 03 Апреля 2002, 23:39:54 »
http://glebushka.hut.ru/loghot/user.jpg
открой браузером - кушает только так :)

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Скрипт, проверяющий логин и пароль.
« Ответ #10 : 04 Апреля 2002, 00:28:25 »
Цитировать
открой браузером - кушает только так

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28