Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка пользовательского ввода 
:(
    Опции темы
study
Дата 30.11.2004, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



Подскажите мне, а лучше дайти примерчики smile , как проверить данные, введённые пользователем в форме.

1. Как проверить число это или строка?
2. Как проверить правильно ли пользователь ввёл IP адрес?
3. Как проверить не превышаел ли размер строки определённого значения?

З.Ы. Было бы хорошо если с примерами рабочего кода, если писать лень, то киньти ссылку на статейку по теме.

Заранее спасибо.
PM MAIL   Вверх
Guest
Дата 30.11.2004, 11:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











HTML-файл
Код

<form action="cgi-bin/test.pl" method="get">
число: <input type="text" name="p_chislo">
<br>
IP: <input type="text" name="p_ip" size="20" maxlength="15">
<br>
Строка:
 <textarea name="p_str" rows="10" cols="40">
   Строка
 </textarea>
<hr>
<input type="submit" value="Проверить">
</form>



test.pl
Код

#!usr/bin/perl
use CGI;

$lenstr=10;  #дли на строки

$chislo = param('p_chislo');
if ($chislo =~ m/\d+/) {print "$chislo - число\n";} #для целых чисел
else {print "$chislo - не число\n";}  

$ip = param('p_ip');
$ip =~ s/\s{1,}//;
if ($ip =~ m/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\./) {print "$ip - ip address\n";}
else {print "$ip - non ip address\n";}

$s = param('p_str');
if (length($s) <= $lenstr) {print "Строка $s удовлетворяет заданным размерам\n";}
else {print "не удовлетворяет\n";}



Вот тебе не большой примерчик. НЕ ПРОВЕРЯЛ, ТАК ЧТО МОГУТ БЫТЬ ЕРОРЫ
  Вверх
chaos
Дата 30.11.2004, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



Цитата(Guest @ 30.11.2004, 11:48)
HTML-файл
Код

<form action="cgi-bin/test.pl" method="get">
число: <input type="text" name="p_chislo">
<br>
IP: <input type="text" name="p_ip" size="20" maxlength="15">
<br>
Строка:
 <textarea name="p_str" rows="10" cols="40">
   Строка
 </textarea>
<hr>
<input type="submit" value="Проверить">
</form>



test.pl
Код

#!usr/bin/perl
use CGI;

$lenstr=10;  #дли на строки

$chislo = param('p_chislo');
if ($chislo =~ m/\d+/) {print "$chislo - число\n";} #для целых чисел
else {print "$chislo - не число\n";}  

$ip = param('p_ip');
$ip =~ s/\s{1,}//;
if ($ip =~ m/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\./) {print "$ip - ip address\n";}
else {print "$ip - non ip address\n";}

$s = param('p_str');
if (length($s) <= $lenstr) {print "Строка $s удовлетворяет заданным размерам\n";}
else {print "не удовлетворяет\n";}



Вот тебе не большой примерчик. НЕ ПРОВЕРЯЛ, ТАК ЧТО МОГУТ БЫТЬ ЕРОРЫ

Это мой пример, забыл авторизоваться на форуме
А то потом не будут знать кому + ставить smile

Кстати в скрипте после
use CGI;
поставь print header; а то забыл написать
PM WWW   Вверх
chaos
Дата 30.11.2004, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



Вот 'рабочий' пример
Код

#!c:\Perl\bin\Perl.exe
use CGI qw(:standard);

print header;

$lenstr=10;  #дли на строки

$chislo = param('p_chislo');
if ($chislo =~ m/\D/g) {print "$chislo - не число<br>";}   #для целых чисел
else {print "$chislo - число<br>";}

$ip = param('p_ip');
$ip =~ s/\s{1,}//g;
if ($ip =~ m/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/) {
 if (($1 <256 && $1>0) && ($2 <256) && ($3 <256) && ($4 <256)){
print "$ip - ip address<br>";
 } else {print "$ip - non ip address<br>";}
}else {print "$ip - non ip address<br>";}

$s = param('p_str');
if (length($s) <= $lenstr) {print "Строка $s удовлетворяет заданным размерам\n";}
else {print "не удовлетворяет\n";}

PM WWW   Вверх
study
Дата 30.11.2004, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



Спасибо chaos, сейчас по тестю smile, а можно без модуля CGI?

Это сообщение отредактировал(а) study - 30.11.2004, 13:18
PM MAIL   Вверх
chaos
Дата 30.11.2004, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



Цитата(study @ 30.11.2004, 13:17)
Спасибо chaos, сейчас по тестю smile, а можно без модуля CGI?

можно
тогда за место print header;
поставь print "Content-Type: text/html\n\n" но могут возникнуть проблемы с интерпретацией \n\n на сервере
PM WWW   Вверх
GoodBoy
Дата 30.11.2004, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



Цитата(chaos @ 30.11.2004, 14:31)
можно
тогда за место print header;
поставь print "Content-Type: text/html\n\n"

а как тогда с этим: $chislo = param('p_chislo');??? smile


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
korob2001
Дата 30.11.2004, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Цитата

а как тогда с этим: $chislo = param('p_chislo');???

Тогда нужно юзать unpack


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
chaos
Дата 30.11.2004, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



Цитата(GoodBoy @ 30.11.2004, 14:49)
Цитата(chaos @ 30.11.2004, 14:31)
можно
тогда за место print header;
поставь print "Content-Type: text/html\n\n"

а как тогда с этим: $chislo = param('p_chislo');??? smile

да!!!, действительно. Проглядел smile
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.