Proste filtrowanie superglobali moze wygladac np tak :
( Pisanie w notatniku z palca u kumpla

)
<?php
class httpRequest
{
$loaded=false,
const
POST=1,
GET=2,
BOTH=3,
COOKIE=4;
private static function load
() {
self::$data['post']=$_POST;
self::$data['get']=$_GET;
self::$data['cookie']=$_COOKIE;
self::$filters=array('string','alphanumeric','special_chars','unsafe_raw','email','url','number_int', 'number_float','magic_quotes','int','boolean','float','form_action');
self::$loaded=true;
//cya
unset($_GET,$_POST,$_COOKIE); }
public static function map
($name,$source,$filters) {
if(!self::$loaded) self::load();
switch ($source)
{
case httpRequest::POST :
$variable=isset(self::$data['post'][$name]) ?
self::$data['post'][$name] : null ; break;
case httpRequest::GET :
$variable=isset(self::$data['get'][$name]) ?
self::$data['get'][$name] : null ; break;
case httpRequest::BOTH :
$variable=isset(self::$data['get'][$name]) ?
self::$data['get'][$name] : isset(self::$data['post'][$name]) ?
self::$data['post'][$name] : null ; break;
case httpRequest::COOKIE :
$variable=isset(self::$data['cookie'][$name]) ?
self::$data['cookie'][$name] : null ; break;
}
{
$_filters[]=$filters;
}
else
{
$_filters=$filters;
}
return self::filter($variable,$_filters);
}
private static function filter
($variable,$filters) {
{
foreach ($filters as $filter)
{
{
switch ($filter)
{
case 'string':
break;
case 'special_chars':
break;
case 'unsafe_raw':
//hmm
break;
case 'alphanumeric':
$variable=preg_replace( "/[^a-zA-Z0-9\-\_]/", "" , $variable); break;
case 'magic_quotes':
break;
case 'int':
break;
case 'float':
break;
case 'boolean':
$variable=intval((boolean
)$variable); break;
}
}
}
}
return $variable;
}
public static function has
($name,$forcedSource=0
) {
if(!self::$loaded) self::load();
if($forcedSource==0)
{
if(isset(self::$data['post'][$name]) || isset(self::$data['get'][$name]) || isset(self::$data['cookie'][$name])) {
return true;
}
}
else
{
switch ((int)$forcedSource)
{
case httpRequest::POST :
return isset(self::$data['post'][$name]); break;
case httpRequest::GET :
return isset(self::$data['get'][$name]); break;
case httpRequest::COOKIE :
return isset(self::$data['cookie'][$name]); break;
}
}
return false;
}
}
?>
Zastosowanie
<?php
if(httpRequest::has('costam'))
{
$variable=httpRequest::map('costam',httpRequest::GET,'int');
}
?>
Jest to tylko przyklad - metoda map() zmusza programiste do podania filtra - w ten sposob zmienna pobierana na czysto jest pobierana dzieki podaniu filtra unsafe_raw -czyli programista o tym doskonale wie ze tworzy sobie niebezpieczenstwo. Filtry mozna rowniez podawac jako tablica. Napisanie takiego prostego wrapperka pozwala na ominiecie mnostwo isset w kodzie oraz brak potrzeby stosowania striptags albo intval();
Nie traktujcie tego jako gotowiec bo ma byc to tylko przyklad