<?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)
本文展示了一个PHP函数sanitize_vars(),用于清理和转换输入变量,确保参数符合预期的类型和要求。通过实例演示了如何使用该函数进行参数检查、类型转换及错误处理。

被折叠的 条评论
为什么被折叠?



