分析理解一个数字型参数过滤,对传参点进行严格类型限制的过滤函数(SQL注入的防护)
if($_GET['level'] && $_GET['id'])
{
$id = $_GET['id'];
$level=$_GET['level'];
switch($level){
case 1:
$id = intval($id);
$sql = queryStr($id);
$res = $db->getOneRow($sql);
sql_print($res);
break;
case 2:
if(is_numberic($id))
{
$sql = queryStr($id);
$res = $db->getOneRow($sql);
sql_print($res);
}
break;
case 3:
if(ctype_digit($id))
{
$id = mysql_real_escape_string($id);
$sql = queryStr($id);
$res = $db->getOneRow($sql);
sql_print($res);
}
break;
default:
echo 'default';
}
}
intval() 函数 intval() 函数用于获取变量的整数值 intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1
语法
int intval ( mixed $var [, int $base = 10 ] )
参数说明: $var:要转换成 integer 的数量值 $base:转化所使用的进制。 如果 base 是 0,通过检测 var 的格式来决定使用的进制: 如果字符串包括了 “0x” (或 “0X”) 的前缀,使用 16 进制 (hex);否则,如果字符串以 “0” 开始,使用 8 进制(octal);否则,将使用 10 进制 (decimal) 返回值: 成功时返回 var 的 integer 值,失败时返回 0。 空的 array 返回 0,非空的 array 返回 1
is_numberic函数 is_numeric() 函数用于检测变量是否为数字或数字字符串
语法
bool is_numeric ( mixed $var )
参数说明: $var:要检测的变量 返回值:如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回空值,即 FALSE
ctype_digit()函数 ctype_digit()函数用于检测字符串中的字符是否都为纯数组
语法:
ctype_digit($text)
参数: $text:要检测的一个字符串 返回值: 如果 $text 中的所有字符都为纯数字,则返回 TRUE 否则返回 false
|