Автор Тема: Создание скрипта регистрации и проверка при входе  (Прочитано 7845 раз)

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

Оффлайн DimoninG

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 45
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.makandus.h12.ru/
Есть файл с логинами паролями. Записываются с новой строки:

Логин
Пароль

Логин
Пароль

и т.п.

Для того, чтобы сравнить введенные пользователем данные в поля ввода со строками из файла, я читаю их (верх логики, блин) таким образом:

open FILE, "<", "users.base";
   $nic = ;
   $pass = ;
close (FILE);

Только вот эта конструкция:
if ($ff{nic} ne $nic or $ff{pass} ne $pass){
}

Все время себя знать дает. По какой такой причине строки разные выходят (хотя они эдентичны)?.. Скрипт целиком:

-----------------------
#!perl
   $form_data = $ENV{\'QUERY_STRING\'};
   $form_data =~ s/%(..)/pack ("C", hex($1))/eg;
   $form_data =~ tr/+/ /;
   @pairs = split (/&/, $form_data);
   
   foreach $pair (@pairs)
   {
      ($name, $value) = split (/=/, $pair);
      $ff{$name}=$value;
   }

   $nic = "d";
   open FILE, "<", "users.base";
      $nic = ;
      $pass = ;
   close (FILE);


   if ($ff{nic} ne $nic or $ff{pass} ne $pass){
   print "Content-type:text/html\\n\\n";
   print "\\n\\n  Ошибка входа!\\n\\n\\n\\n";
   print "\\nНеправильный логин/пароль. Попробуйте http://localhost/main.html\\">снова

";
print "\\n";
   }

   else{

   print "Content-type:text/html\\n\\n";
   print "\\n\\n  Вход выполнен.\\n\\n\\n\\n";
   print "Вход выполнен. ";
   }
-----------------------

Зато, если после прочтения из файла сделать $nic = "DimoninG"; $pass = "fuckoff"; к примеру и в поля ввода ввести это же самое - все работает...

И еще. Скрипт, который проводит регистрацию:

---------------------
#!perl
   $form_data = $ENV{\'QUERY_STRING\'};
   $form_data =~ s/%(..)/pack ("C", hex($1))/eg;
   $form_data =~ tr/+/ /;
   @pairs = split (/&/, $form_data);
   
   foreach $pair (@pairs)
   {
      ($name, $value) = split (/=/, $pair);
      $ff{$name}=$value;
   }

#

   if ($ff{nic} eq 0 or $ff{name} eq "" or $ff{pol} eq "" or $ff{age} == "" or $ff{email} eq "" or $ff{living} eq ""){


   print "Content-type:text/html\\n\\n";
   print "\\n\\n  Ошибка регистрации!\\n\\n\\n\\n";

   print "\\nВы не ввели данные в одно из необходимых полей или заполнили его неправильно. Попробуйте http://localhost/registration.html\\">снова\\n";
      
   }
   else{

   print "Content-type:text/html\\n\\n";
   print "\\n\\n  Вы зарегистрированы!\\n\\n\\n\\n";

   print "Ваш ник-нейм: $ff{nic}
";
   print "Ваш пароль: $ff{pass}
";
   print "Ваше имя: $ff{name}
";
   print "Ваш ящик: $ff{email}
\\n\\n";
   print "Ваш пол: $ff{pol}
\\n\\n";
   print "Ваш возраст: $ff{age}
\\n\\n";
   print "Ваше место проживания: $ff{living}

\\n\\n";


   print "\\nРегистрация прошла успешно и вы добавлены в список участников. Поздравляем.";
   print "Теперь вы можете http://localhost/main.html\\">автоизироваться.\\n";
   
        open(FILE, ">>users.base") || die "Can\'t open file!";
      print FILE "$ff{nic}\\n";
      print FILE "$ff{pass}\\n";
      print FILE "$ff{name}\\n";
      print FILE "$ff{email}\\n";
      print FILE "$ff{pol}\\n";
      print FILE "$ff{age}\\n";
      print FILE "$ff{living}\\n\\n";
        close(FILE);
   }
--------------------------

Оффлайн DimoninG

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 45
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.makandus.h12.ru/
Возможно, что непонятно - чего это мне надо-то?.. Дело в том, что при регистрации и входе я указываю один и тот же логин/пароль, но вход не получается, хотя в файлах записано все верно и ввожу при входе тоже верно.

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
ну на первый взгляд... :
1. use strict;
2. use CGI;
3. use HTML::Template;
4. Зачем хранить инфу о юзерах в файле? нет БД?
And no religion too...

Оффлайн DimoninG

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 45
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.makandus.h12.ru/
БД нет, т.к. я с этим не умею работать.:confused:

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
DimoninG
Дак она есть или ты просто с ней не умеешь работать? если она есть, то поверь знаемущему человеку проще научиться с ней работать чем заморачиваться в файлами... :)
"Лучше пол дня потерять зато за пол-часа долететь"
And no religion too...

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
лол
perldoc -f chomp
2B OR NOT 2B = FF

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Chs
Цитировать
лол

и что ты этим хотел сказать?
And no religion too...

Оффлайн DimoninG

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 45
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.makandus.h12.ru/
Это форум разработчиков скриптов?.. Я не ошибся?.. Мне вообще кто-нибудь поможет?..
Почему у меня строки, записанные в файл и считанне из него же не совпадают?! Единственный нормальный человек, который мне хоть что-то посоветовал и не послал сразуже - это commander...

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
commander да то что не стоит если у человека обычная простуда лечить его ядами. Насколько я знаю, это только в РНР принято человеку только начавшему изучать язык, сразу в руки давать реляционную БД и заставлять учить два языка вместо одного. Да и гостевые книги на оракле не пишутся. Постарайся постигнуть это.
The documentations is your friend

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
DimoninG а ты их вывести на экран можеш и посмотреть что у тебя не так? и сделай то что тебе
Chs посоветовал.
The documentations is your friend

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Кстати и где ты видел такую конструкцию?
$nic = ;
$pass = ;
что она делать должна?
The documentations is your friend

Оффлайн DimoninG

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 45
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.makandus.h12.ru/
Видел такую конструкцию в "Учебник по программированию на Perl для учащихся вузов бла бла бла". Эта штука должна читать строку. И она, заметь, ее читает. Только тут другое: При выводе на экран после логина (например) стоит пробел, только эту тоже фигня, т.к. если при входе ввести имя и пробел лишний поставить - не прокатывает, скотина. Я вот и думаю, что у тем неправильно...

Кстати, я не понял, что мне Chs посоветовал и куда это вообще надо писать... (Ногами больно не пинать - учу Перл второй день).

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Вот тебе твой пример с другой стороны:
#!/usr/bin/perl

$pass=;
$login=;
$login2=;

print $pass,$login,$login2;
__DATA__
login1
pass1

login2
pass2


$login2 будет пустой, понятно почему?
The documentations is your friend

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
DimoninG О perldoc в учебнике по программированию ничего не сказано?
The documentations is your friend

Оффлайн DimoninG

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 45
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.makandus.h12.ru/
о perldoc - ничего

Пустой будет, т.к. третья строка пуста, но мы читаем все подряд?.. Если я прав (или даже не прав) - это тут ни причем, т.к. я только одного пользователя создаю... То есть, если четко сформулировать вопрос: если одну и ту же информацию записать в файл, а потом прочитать - получаем разные данные!

Если есть пример с регистрациями - дайте ссылку (на сам cgi). Может - поможет.

 

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