<?php /** * @param $vars * @param $signatures * @param null $redir_url */ function sanitize_vars(&$vars, $signatures, $redir_url = null){ $tmp = array(); foreach($signatures as $name => $sig){ if(!isset($vars[$name]) && isset($sig['required']) && $sig['required']){ if($redir_url){ header("Location: $redir_url"); } else { echo 'Parameter &name not present and no redirect URL'; } exit(); } $tmp[$name] = $vars[$name]; if(isset($sig['type'])){ settype($tmp[$name], $sig['type']); } if(isset($sig['function'])){ $tmp[$name] = $sig['function']($tmp[$name]); } } $vars = $tmp; } $sigs = array( 'prod_id' => array('required' => true, 'type' => 'int'), 'desc' => array('required' => true, 'type' => 'string', 'function' => 'addslashes') ); var_dump($_GET); //sanitize_vars($_GET,$sigs,"http://{$_SERVER['SERVER_NAME']}/error.php?cause=vars"); sanitize_vars($_GET,$sigs); var_dump($_GET);
测试:http://localhost/?prod_id=ab35&desc=12%22273
array (size=2)
'prod_id' => string 'ab35' (length=4)
'desc' => string '12"273' (length=6)
(size=2)
'prod_id' => string 'ab35' (length=4)
'desc' => string '12"273' (length=6)
array (size=2)
'prod_id' => int 0
'desc' => string '12\"273' (length=7)
(size=2)
'prod_id' => int 0
'desc' => string '12\"273' (length=7)