Выполнение команд, содержащихся в строке

Как видно из примера, синтаксическая ошибка не привела к остановке вы¬полнения всей программы. Благодаря этому многие программисты исполь¬зуют функцию eval () для обработки исключительных ситуаций в своих про¬граммах.
Создадим программу, позволяющую выполнять любые команды, вводимые в поле TEXTAREA:
# Выводим все сообщения об ошибках
# в окно Web-браузера
use CGI::Carp qw(fatalsToBrowser);
# подключаем модуль для обработки данных формы use CGI qw( :standard);
print "Content-type: text/html\n\n";
my $cod = param("cod"); print "<HTMLXHEAD>\n";
print "<Т1ТЬЕ>Выполнение команд, содержащихся в строке</Т1ТЬЕ>\п"; print "</HEADXBODY>\n"; if (defined($cod)) {
print "<В>Результат выполнения командыс/BXBRXBR^n"; eval($cod);
print $@ if (defined($@)); print "<BRXBR>\n";
}
print "<В>Введите команду для выполнениЖ/BXBRXBRAn"; print "<FORM>\n"; *
print "CTEXTAREA name=\"cod\" cols=\"25\" rows=\"10\">"; print "</TEXTAREAXBRXBR>\n";
print "<INPUT type-\"submit\" value=\"Выполнить код\">\п";
print "</FORM>\n";
print "</BODY></HTML>\n";
ВНИМАНИЕ!
Никогда не подставляйте данные, вводимые пользователями, в функцию eval(), т. к. это потенциальная угроза безопасности. Следует помнить, что не¬которые команды могут полностью уничтожить ваш Web-сайт.



Страница: 1 | 2


Web сайты на Perl и MySql