WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

validate_file() WP 1.2.0

Проверяет переданную строку, является ли она правильным путем к файлу (имени файла). Если проверка пройдена, вернет 0; если нет, вернет: 1, 2 или 3.

✈ 1 раз = 0.000018с = очень быстро | 50000 раз = 0.01с = скорость света PHP 7.1.2, WP 4.7.5

Хуков нет.

Возвращает

Число.
0 - проверка пройдена;
1 - означает, что файл содержит .. или ./;
2 - означает, что $file содержит : после первого символа;
3 - означает, что файла нет в списке допустимых, указанных в параметре $allowed_files

Использование

validate_file( $file, $allowed_files );
$file(строка) (обязательный)
Путь до файла.
$allowed_files(массив)
Список допустимых файлов, которым должна соответствовать переменная $file.
По умолчанию: ''

Примеры

#1 Демонстрация проверок пути файлов

Путь, который пройдет проверку:

$path = 'uploads/2012/12/my_image.jpg';
echo validate_file( $path ); // выведет 0 (допустимый путь)

Путь, который не пройдет проверку:

$path = '../../wp-content/uploads/2012/12/my_image.jpg';
echo validate_file( $path ); // выведет 1 (недоступный путь)

Заметки

Будьте внимательны при проверке возвращаемого результата, т.к. если проверка пройдена, то функция вернет 0, а если не пройдена то вернет число. Поэтому проверять стоит как-то так:

if( validate_file( $file ) === 0 )
	echo 'проверка пройдена';
else
	echo 'проверка не пройдена';

Код validate file: wp-includes/functions.php WP 4.8

<?php
function validate_file( $file, $allowed_files = '' ) {
	if ( false !== strpos( $file, '..' ) )
		return 1;

	if ( false !== strpos( $file, './' ) )
		return 1;

	if ( ! empty( $allowed_files ) && ! in_array( $file, $allowed_files ) )
		return 3;

	if (':' == substr( $file, 1, 1 ) )
		return 2;

	return 0;
}

Cвязанные функции

Из метки: validate (проверка)

Еще из раздела: Очистка данных

validate_file 3 комментария
  • campusboy1712 cайт: wp-plus.ru
    @

    Насчёт заметки. Можно и так тогда:

    if( ! validate_file( $file ) )
    	echo 'проверка пройдена';
    else
    	echo 'проверка не пройдена';
    • Kama4457

      Да можно, но это неявно. А для такой нестандартной функции лучше наверное подчеркнуть, что 0 - значит все ОК, чтобы по коду это было сразу понятно...

Здравствуйте, !

Ваш комментарий