Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : PROext                               2:5020/400     25 May 2001  11:33:08
 To : All
 Subject : Re: проверка для формы
 -------------------------------------------------------------------------------- 
 
 
 Anton Kudris A. <Anton.Kudris.A.@p17.f21.n5057.z2.fidonet.org> пишет в
 сообщении:990699313@p17.f21.n5057.z2.fidonet.ftn...
 
 > Hi, All.
 >
 >    Тут как то писали, что один из вариантов проверки того, с моей ли формы
 
 мне
 
 > приходят данные - это приписывать к форме некий случайный номер и хранить
 
 его у
 
 > себя в базе данных. А потом проверять, когда от формы получены параметры
 
 искать
 
 > этот номер у себя в базе данных.
 >     Я написал две функции, одна просто возвращает случайное число (чтобы
 
 потом
 
 > приписать его к форме), а вторая получает это число и смотрит, есть ли в
 
 базе
 
 > такое и не слишком ли оно устарело (критерий старости - один час).
 >     В общем помогите это всё оптимизировать немного. И ещё вопрос: что я
 
 делаю
 
 > не так, почему не удаляется из файла запись во второй функции?
 >
 > sub get_number
 > # отдаёт случайное число. И записывает его вместе с временем в файл.
 > {
 > my $random= substr(md5_hex(int(rand 55)),0,5); #я решил, что мне хватит и
 
 5цифр
 
 > my $hour = (localtime(time))[2];
 
 А если я вызвал эту ф-цию в 14:59:48, а отправил форму в 15:00:02 ?
 Hужно заносить не только часы, но и минуты...
 А лучше - все значение time(), а потом проверять это значение с новым
 минус - 60*60
 
 > my $string=join('' , $random, ' ', $hour,);
 
 my $string = "$random $hour";
 [sckip]
 
 > sub check_number
 > {
 > my($num)=@_; #это номер, который потом ищется в базе данных
 
 my $num = $_[0];
 
 > my $hour = (localtime(time))[2];
 
 Hасчет веремени - см. выше...
 
 > open (ACC, "access.dat") || die "can't open access.dat";
 > while (<ACC>)
 >     {
 >     chomp;
 >     my ($s_num,$s_time)=split(/\s+/, $_);
 >         $mass{$s_num}=$s_time;
 >         }
 > close ACC;
 >
 > if (exists $mass{$num})
 >     {
 >     if ($mass{$num}!=$hour) { return "0"; }
 >     else    {
 >         delete $mass{$num};
 >         open (ACC, "access.dat") || die "can't open access.dat";
 >         my $arr;
 >         foreach my $k (keys %mass) { $arr=join('', $k, ' ', $mass{$k},
 
 "\n"); }
 
 А где запись в файл?
 
 >             close ACC;
 >         return "1";
 >         }
 >
 >     }
 > }
 
 --
 - ---
        Best regards,    InSAn
 
     http://www.proext.com - PROext: Портал программиста
 --- ifmail v.2.15dev5
  * Origin: MTU-Intel ISP (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 проверка для формы   Anton Kudris A.   24 May 2001 14:14:14 
 Re: проверка для формы   PROext   25 May 2001 11:33:08 
 проверка для формы   Anton Kudris A.   25 May 2001 18:07:00 
 Re: проверка для формы   Pavel Kurnosoff   28 May 2001 01:22:38 
 Re: проверка для формы   Alexander Beskhmelnitsyn   25 May 2001 08:44:29 
 проверка для формы   Anton Kudris A.   25 May 2001 18:00:06 
 Re: проверка для формы   Alexander Beskhmelnitsyn   28 May 2001 08:04:34 
 Re: проверка для формы   Artem Chuprina   28 May 2001 11:35:51 
 проверка для формы   Anton Kudris A.   28 May 2001 15:45:15 
 Re: проверка для формы   Artem Chuprina   28 May 2001 18:30:11 
 проверка для формы   Anton Kudris A.   26 May 2001 01:18:13 
 RE:проверка для формы   Sergey Krutyko   25 May 2001 09:28:47 
 Re: проверка для формы   Pavel Ammosov   25 May 2001 15:24:58 
Архивное /ru.cgi.perl/9104651ddf25.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional