|
Поиск по сайту:
Главная
О проекте
Web-мастеру
HTML & JavaScript
SSI
Perl
PHP
XML & XSLT
Unix Shell
MySQL
Безопасность
Хостинг
Другое
|
|
Программа guestbook.cgi с ошибками
#!/usr/bin/perl -w
# guestbook.cgi
BEGIN { $ENV{PATH} = '/usr/bin:/bin' }
delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; # Сделаем %ENV безопаснее =:-)
print "Content-type: text/html\n\n";
print "<HTML>\n<HEAD><TITLE>Дырявая гостевая книга</TITLE></HEAD>\n";
&ReadParse(\%input);
my $email= $input{email};
my $texte= $input{texte};
$texte =~ s/\n/<BR>/g;
print "<BODY><A HREF=\"guestbook.html\">
Гостевая книга </A><BR><form action=\"$ENV{'SCRIPT_NAME'}\">\n
Email: <input type=text name=email><BR>\n
Текст:<BR>\n<textarea name=\"texte\" rows=15 cols=70>
</textarea><BR><input type=submit value=\"Вперед!\">
</form>\n";
print "</BODY>\n";
print "</HTML>";
open (FILE,">>guestbook.html") || die ("Не могу записать\n");
print FILE "Email: $email<BR>\n";
print FILE "Текст: $texte<BR>\n";
print FILE "<HR>\n";
close(FILE);
exit(0);
sub ReadParse {
my $in =shift;
my ($i, $key, $val);
my $in_first;
my @in_second;
# Изучим данные
if ($ENV{'REQUEST_METHOD'} eq "GET") {
$in_first = $ENV{'QUERY_STRING'};
} elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN,$in_first,$ENV{'CONTENT_LENGTH'});
}else{
die "ОШИБКА: неизвестный метод запроса\n";
}
@in_second = split(/&/,$in_first);
foreach $i (0 .. $#in_second) {
# Заменяем плюсы на пробелы
$in_second[$i] =~ s/\+/ /g;
# Разбиваем на ключ и значение
($key, $val) = split(/=/,$in_second[$i],2);
# Переконвертируем %XX из шеснадцатиричных чисел в символы
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
# Ассоциируем ключ и значение
$$in{$key} .= "\0" if (defined($$in{$key}));
$$in{$key} .= $val;
}
return length($#in_second);
}
[ Назад ]
[ Содержание ]
[ Вперед ]
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|
|
|