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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите исправить бажную CGI-шку 
:(
    Опции темы
rcdimon
Дата 7.9.2004, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

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



Здравствуйте, пишу первую в своей жизни гостевую книгу.

Не хочу и не собираюсь брать уже готовую книгу.

Все получилось просто замечательно. Все хорошо работает. Но ее можно использовать не совсем хорошо. Например она с радостью пример <h1>уроды</h1>
и напишет это как пологается, а ведь можно писать еще и скрипты! Как мне сделать проверку на символы <> и если они есть менять их на другие, например на # И как проверять на пустоту строк. Например у меня так

Код
if ($name_ == ""){print "Нельзя оставлять пустым"; exit(0);}


Эта конструкция работает если он ничего не ввел и если ввел строку из цифр или с цифры, а если там буквы, она принимает ее за пустую! Почему и как от этого избавиться?

Вот коды на всякий случай. Дизайн книги хранится в www/txt/form.txt
Текст, который ввел юзер отправляется в cgi-bin/l/gost_text.txt
cgi-bin/l/gost_text_.txt- файл для копирования книги перед добавлением новой записи, иначе бы новая запись добавлялась бы в конец страницы, а не в ее начало.

gost.cgi - Программа добавоения в файл новых записей
gost_1.cgi- программа для отображения книги на экране.
Код
------------------------------------------------------------------------------------------form.txt
<html>
<head>
<title>Гостевая книга</title>
<meta http-equiv="Content-Type" content="text/html; Charset=windows-1251">
</head>
<body bgcolor="#01488f" text="#00ffff" link="#0000ff" vlink="#800080" alink="#FF0000">

<center>
<br><br>
<h2><font color = red>Добавление новой записи</font></h2>
<br>

<table border = 0 cellPadding=0 cellSpacing=0>
<tr><td><hr></td><td><hr></td></tr>
<tr><td>Ваше имя:</td><td align = right> <form action = "../cgi-bin/gost.cgi" method = "post">
<input type = text name= "u_name" cols = 30></td></tr>

<tr><td>Ваш E-Mail:</td><td align = right>
<input type = text name= "u_mail" cols = 30></td></tr>

<tr><td>Ваш коментарий:</td><td>
<textarea name= "text" rows = 5 cols = 30>

</textarea>
</td></tr>
<tr><td>&nbsp;</td><td align = right><input type = reset> <input type = submit></td></tr>
</table>


<table border = 0 cellPadding=0 cellSpacing=0 >
<tr valign = bottom>
<td><input type = "radio" name = "pic" value = "1"><img src = "../pic/1.gif"></td>
<td><input type = "radio" name = "pic" value = "2"><img src = "../pic/2.gif"></td>
<td><input type = "radio" name = "pic" value = "3"><img src = "../pic/3.gif"></td>
<td><input type = "radio" name = "pic" value = "4"><img src = "../pic/4.gif"></td>
<td><input type = "radio" name = "pic" value = "5"><img src = "../pic/5.gif"></td>
<td><input type = "radio" name = "pic" value = "6"><img src = "../pic/6.gif"></td>
<td><input type = "radio" name = "pic" value = "10"><img src = "../pic/10.gif"></td>
<td><input type = "radio" name = "pic" value = "12"><img src = "../pic/12.gif"></td>
<td><input type = "radio" name = "pic" value = "13"><img src = "../pic/13.gif"></td>
<td><input type = "radio" name = "pic" value = "14"><img src = "../pic/14.gif"></td>
<td><input type = "radio" name = "pic" value = "16"><img src = "../pic/16.gif"></td>
<td><input type = "radio" name = "pic" value = "17"><img src = "../pic/17.gif"></td>
<td><input type = "radio" name = "pic" value = "18"><img src = "../pic/18.gif"></td>
</td></tr>
</table>
</form>
<table border = 0 width = 70%>
<tr><td>
-----------------------------------------------------------------------------------------gost.cgi
#!/usr/bin/perl
use CGI qw(:all);

print header;


$name_ = param('u_name');
$text_ = param('text');
$num   = param ('pic');
$mail_ = param('u_mail');
$br = "\<br\>";

chomp $name_;

if ($name_ == "") {print "Поле имени не должно оставаться пустым!\<br\>";
print "\<a href = \"gost_1.cgi\"\>Назад в книгу\<\/a\>";
exit(0);}

$beg = "\<font color = red\>";
$en  = "\<\/font\>";
$hr = "\<hr\>";

$mail__ = "E-Mail: ";
$name__ = "Имя: ";
$text__ = "Коментарий: ";
$ali = "\<font align = \"justify\"\>";

open (MF, "l/gost_text.txt");
open (MMF, ">l/gost_text_.txt");

sub pic_prin {
if ($num=="1")  {$str =  "\<img src = ..\/pic\/1.gif\>" ;}
if ($num=="2")  {$str =  "\<img src = ..\/pic\/2.gif\>" ;}
if ($num=="3")  {$str =  "\<img src = ..\/pic\/3.gif\>" ;}
if ($num=="4")  {$str =  "\<img src = ..\/pic\/4.gif\>" ;}
if ($num=="5")  {$str =  "\<img src = ..\/pic\/5.gif\>" ;}
if ($num=="6")  {$str =  "\<img src = ..\/pic\/6.gif\>" ;}
if ($num=="10") {$str =  "\<img src = ..\/pic\/10.gif\>";}
if ($num=="12") {$str =  "\<img src = ..\/pic\/12.gif\>";}
if ($num=="13") {$str =  "\<img src = ..\/pic\/13.gif\>";}
if ($num=="14") {$str =  "\<img src = ..\/pic\/14.gif\>";}
if ($num=="16") {$str =  "\<img src = ..\/pic\/16.gif\>";}
if ($num=="17") {$str =  "\<img src = ..\/pic\/17.gif\>";}
if ($num=="18") {$str =  "\<img src = ..\/pic\/18.gif\>";}
}

while (defined($te=<MF>)){
print MMF $te;}

close (MF);
close (MMF);
pic_prin;

open (MF,">l/gost_text.txt");
print MF $ali;   #<font align = justify>
print MF $hr;   #<hr>
print MF $str;   #<img src = "../pic/*.gif">
print MF $beg;   #<font color = red>
print MF $name__;  #Имя:
print MF $en;   #</font>
print MF $name_;  #NAME!!
print MF "$br\n";  #<br>
print MF $beg;   #<font color = red>
print MF "E-Mail: ";
print MF $en;   #</font>
print MF $mail_;
print MF "$br\n";  #<br>
print MF $beg;   #<font color = red>
print MF $text__;  #Коментарий:
print MF $en;   #</font>
print MF $text_;  #COMMENT!!
print MF "$br\n";  #<br>
print MF "\<p align = right\>"; #
print MF scalar(localtime); #Время
print MF "\<\/p\>";  #</p>
close(MF);

open (MF, ">>l/gost_text.txt");
open (MMF, "l/gost_text_.txt");

while (defined($te=<MMF>)){
print MF $te;}

close (MF);
close (MMF);

print "\<title\>Запись добавлена\<\/title\>";
print "\<font color = red\>Запись успешно добавлена!\<\/font\>\<br\>\<hr\>";


print "$str";

print "\<font color = red\>Имя: \<\/font\>$name_\<br\>\n";
print "\<font color = red\> E-Mail: \<\/font\>$mail_\<br\>\n";
print "\<font color = red\>Коментарий: \<\/font\> $text_\<br\>\n";
print "$br \<hr\>";



print "\<a href = \"gost_1.cgi\"\>Назад в книгу\<\/a\>";

------------------------------------------------------------------------------------------gost_1.cgi
#!/usr/bin/perl
use CGI qw(:all);

print header;


open(MF,"../www/txt/form.txt");
while (defined($te=<MF>)){
print $te;}
close (MF);

open(MF,"l/gost_text.txt");
while (defined($tee=<MF>)){
print $tee;}
close (MF);

print "\<hr\>\<\/body\>\<\/thml\>";


!!!!Огромное спасибо за внимание!!!!









PM MAIL ICQ   Вверх
GoodBoy
Дата 7.9.2004, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



замени if ($name_ == "") на if ($name_ eq "")
и добавь после этой проверки
Код

foreach my $key ($name_, $text_, $num, $mail_) {
   $key =~ s/</\&lt;/gim;
   $key =~ s/>/\&gt;/gim;
}




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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

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



Cпасибо тебе большое!!! Все хорошо работает!
PM MAIL ICQ   Вверх
wlad
Дата 10.9.2004, 11:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А если не так if ($name_ == "") а так if ($name_ )

и

Код

foreach my $key ($name_, $text_, $num, $mail_) {
$key =CGI::escapeHTML($key);
}

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


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

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


 




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


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

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