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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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






 
 
| Добавить в избранное | Сделать стартовой 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