В phpBB все данные, отправляемые пользователями, скрипт получает с помощью функции request_var ().
Ее использование позволяет в некоторой мере защитить web-приложение от SQL-инъекций, XSS и прочих уязвимостей. Она совершает первичную обработку, проверяя, чтобы значение, переданное пользователем, было нужного нам типа.
Все возвращаемые функцией значения также очищаются от посторонних символов с помощью stripslashes () и htmlspecialchars ().
Синтаксис
mixed request_var ( $var_name , $default [, $multibyte = false [, $cookie = false]] )
Параметры
var_name
Имя параметра, который Вы хотите получить от пользователя.
default
Значение по умолчанию. Если получаемый от пользователя параметр будет отсутствовать, то функция вернет значение, установленное в $default.
Интересно, что у $default есть еще одно полезное свойство: с помощью него функция узнает какой тип должен быть у получаемого от пользователя параметра.
multibyte
Необязательный параметр. По умолчанию установлен в false. Установите в true, если получаемая строка может содержать не-ASCII символы.
cookie
Необязательный параметр. Установите в true, если получаемое Вами значение будет передаваться через cookie.
Примечание: Использовать $_POST, $_GET и $_COOKIE не запрещается, если Вам необходимо проверить наличие параметра, например:
<?php $submit = (isset($_POST['submit'])) ? true : false; ?>
Примеры использования
<?php // Правильное использование. Переменная типа int. $start = request_var('start', 0); // Неправильное использование, так как это может привести // к SQL-уязвимости, потому что параметр не очистится правильно. $start = request_var('start', '0'); // Правильное использование. Переменная типа float. $price = request_var('price', 0.0); ?>
Получение мультибайтовой строки:
$message = utf8_normalize_nfc(request_var('message', '', true));
Внимание: Не забывайте принимать мультибайтовые строки везде, где они могут использоваться. К примеру, при создании топиков, сообщений, личных сообщений и так далее. Всегда нормализируйте получаемые в UTF8 строки. Дело в том, что некоторые символы могут представлены в виде кодов. Например, символ Å может быть представлен кодом U+00C5.
<?php $_REQUEST['multibyte_string'] = 'Käse'; // Нормализированная мультибайтовая строка. echo utf8_normalize_nfc(request_var('multibyte_string', '', true)); // ASCII строки не нуждаются в нормализировании. echo request_var('multibyte_string', ''); ?>
Получение значения из Cookie:
<?php $cookie = request_var('cookie_time', 0, false, true); ?>
RSS