ГЛАВА 7. Файловый ввод/вывод и файловая система
Обратные апострофы
Существует и другой способ выполнения системных команд, не требующий вызова функций, — выполняемая команда заключается в обратные апострофы(` `), а результаты ее работы отображаются в браузере. Пример:
$output = `ls`;
print "<pre>$output</pre>";
Этот фрагмент выводит в браузер содержимое каталога, в котором находится сценарий.
Внутренний параметр ping -с 5(-п 5 в системе Windows) задает количество опросов сервера.
Если вы хотите просто вернуть неформатированные результаты выполнения команды, воспользуйтесь функцией passthru(), описанной ниже.
passthru()
Функция passthru() работает почти так же, как ехес(), за одним исключением — она автоматически выводит результаты выполнения команды.
Синтаксис функции passthru():
void passthru(string команда [, int возврат])
Если при вызове passthru() передается необязательный параметр возврат, этой переменной присваивается код возврата выполненной команды.
escapeshellcmd()
Функция escapeshellcmd() экранирует все потенциально опасные символы, которые могут быть введены пользователем(например, на форме HTML), для выполнения команд exec(), passthru(), system() или рореn().
Синтаксис:
string escapeshellcmd(string команда)
К пользовательскому вводу всегда следует относиться с определенной долей осторожности, но даже в этом случае пользователи могут вводить команды, которые будут исполняться функциями запуска системных команд. Рассмотрим следующий фрагмент:
$user_input = `rm -rf *`; // Удалить родительский каталог и все его подкаталоги
ехес($user_input); // Выполнить $user_input !!!
Если не предпринять никаких мер предосторожности, такая команда приведет к катастрофе. Впрочем, можно воспользоваться функций escapeshellcmd() для экранирования пользовательского ввода:
$user_input = `rm - rf *`; // Удалить родительский каталог и все его подкаталоги
ехес( escapeshellcmd($user_input)); // Экранировать опасные символы
Функция escapeshellcmd() экранирует символ *, предотвращая катастрофические последствия выполнения команды.
Безопасность является одним из важнейших аспектов программирования в среде Web, поэтому я посвятил целую главу этой теме и ее отношению к программированию РНР. За дополнительной информацией обращайтесь к главе 16.
Назад |
Содержание раздела |
Общее Содержание |
Вперед
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|