此类用于接受作者指定的参数说明对象,对参数的名称和类型进行验证,还可以指定一个额外的函数名称对参数进行处理
<?php
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(
'email' => array('required' => TRUE, 'type' => 'string', 'function' => 'addslashes'),
'passwd' => array('required' => TRUE, 'type' => 'string', 'function' => 'addslashes')
);
sanitize_vars($_POST, $sigs);
其中的, 'function' => 'addslashes'是可选的.也可以指定别的自定义函数.这里主要是对用户输入进行处理,防止注入.
每个选项都有个required键值对,说明参数是否是必须的,type的类型和settype一致,
settype ( mixed &$var , string $type ) : bool
将变量 var 的类型设置成 type。
参数
var
要转换的变量。
type
type 的可能值为:
◦ "boolean" (或为"bool",从 PHP 4.2.0 起)
◦ "integer" (或为"int",从 PHP 4.2.0 起)
◦ "float" (只在 PHP 4.2.0 之后可以使用,对于旧版本中使用的"double"现已停用)
◦ "string"
◦ "array"
◦ "object"
◦ "null" (从 PHP 4.2.0 起)
有了这个神器,就多了一道安全屏障,如果类型设置为int,那就只能接收整型的参数,否则会被该函数自动拦截处理了.
本文介绍了一个PHP函数sanitize_vars,用于验证和处理用户输入参数,确保参数类型正确并防止SQL注入,通过实例展示了如何使用此函数增强应用程序的安全性。
301

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



