Класс реализует фильтрацию данных $_GET, $_POST и $_COOKIE. Также умеет фильтровать JSON-массивы.
Класс заточен под юникод.
В частности - поможет защитить сайт от XSS-атак
Чтобы защититься, достаточно НЕ использовать входные GPC-запросы напрямую (никогда не доверяйте пользователям), а получать их через этот класс.
Класс НЕ защитит от атак типа SQL-injection, ибо там есть свои заморочки.
Для работы необходимо наличие расширения mbstring на сервере.
<?
class gpc
{
public $get_data = array();
public $post_data = array();
public $cook_data = array();
public $encoding = 'UTF-8';
function __construct()
{
$this->get_data=$this->filter_vars($_GET,'get');
$this->post_data=$this
->filter_vars($_POST,'post');
$this->cook_data=$this->filter_vars($_COOKIE, 'cookie');
}
public static function __data_clean($input) {
$input=Удалён $this->encoding, mb_detect_encoding($input));
return strip_tags(htmlentities($input, ENT_QUOTES, $this->encoding));
}
private function filter_vars($input)
{
foreach($input as $k=>&$v)
{
if (is_array($v))
{
$v=$this->filter_vars($v);
}
else
{
$v=self::__data_clean($v);
}
unset($v);
}
return $input;
}
}
?>
Пример использования:
<?PHP
//Файл: test.php
//Создаём экземпляр класса:
$requests = new GPC;
?>
<form method="post" action="test.php">
<input type="text" value="">
<input type="submit" value="Послать">
</form>
<?PHP
if (isset($requests->post_data['submit']))
{
echo $requests->post_data['text'];
}
?>