П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 179567 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 77504 раз(а).

Учебник HTML.
Просмотров 75154 раз(а).

Руководство по PHP5.
Просмотров 46192 раз(а).

Хостинг через призму DNS.
Просмотров 53439 раз(а).

Подборка текстов стандартных документов.
Просмотров 46174 раз(а).

Учебник PHP - Самоучитель
Просмотров 52331 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 52885 раз(а).

Внешние атаки...
Просмотров 42793 раз(а).

Учебник PHP.
Просмотров 38313 раз(а).

SSI в примерах.
Просмотров 28398 раз(а).






 
 
| Добавить в избранное | Сделать стартовой Project.Net.Ru | Помощь





Программа 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);
}

[ Назад ] [ Содержание ] [ Вперед ]



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru