Проверка доступности функции PHP
Ковырялся как-то в очередном сплойте, которым скрипткиддисы пытались проломить блог. Среди всякого говна нашел там интересную идею о проверке доступности функций PHP перед их вызовом. Реализация была такая же кривая, как и весь остальной код этих быдлохакеров, поэтому я переписал функцию проверки по-своему. Проверка выполняется тремя способами: анализом значения параметра disable_functions в файле php.ini, а также через функции PHP function_exists и is_callable. Использование всех трех способов проверки дает абсолютно точный результат.Code (PHP) : Убрать нумерацию
- //--------------------------------------------------------------------------
- // Функция проверки существования и доступности другой функции PHP
- //--------------------------------------------------------------------------
- // Параметры: $func - строка имени функции
- // На выходе: true - функция есть и доступна для вызова,
- // false - функция недоступна по какой-либо причине
- //--------------------------------------------------------------------------
- function is_function_enabled($func) {
- $func=strtolower(trim($func));
- if ($func=='') return false;
- // Получить список функций, отключенных в php.ini
- $disabled=explode(",",@ini_get("disable_functions"));
- if (empty($disabled)) {
- $disabled=array();
- }
- else {
- // Убрать пробелы и привести названия к нижнему регистру
- $disabled=array_map('trim',array_map('strtolower',$disabled));
- }
- // Проверить доступность функции разными способами
- return (function_exists($func) && is_callable($func) &&
- !in_array($func,$disabled)
- );
- }
Code (PHP) : Убрать нумерацию
- // Проверка доступности функции shell_exec
- if (is_function_enabled('shell_exec')) {
- echo shell_exec('ping yandex.ru');
- }
Просмотров: 7688 | Комментариев: 5
Метки: PHP
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(10.04.2016 в 00:28):
И чо? Функция есть, а в конфиге запрещена. Какие дальше будут варианты?
dgd
(10.04.2016 в 00:23):
function_exists()
Александр
(28.03.2012 в 21:25):
Спасибо за функцию, использую её в своём коде. Работает на ура!
ManHunter
(14.11.2010 в 14:28):
Пропиши в php.ini список функций в разном регистре и поэкспериментируй. После этого задавай глупые вопросы.
Holips
(14.11.2010 в 14:11):
Вот не пойму только, зачем приводить название функции к нижнему регистру ?
Добавить комментарий
Заполните форму для добавления комментария