php开发安全程序
可以到http://pecl.php.net/package/filter下载最新的版本。在编写本书时它仍处于beta版本。filter软件包提供了数据类型验证和数据编码两个功能,它提供以下几个主要函数:
filter_data–用于过滤数据;
filter_input–用于表单提交内容的过滤;
filter_var–变量内容的过滤,与filter_data和is_int()标准函数类似。
这3个函数绝大部分的功能都很类似,只不过应用于不同的场合,它们使用的参数也是通用的,如表5-5所示。
表5-5
常量名称
功 能
FILTER_VALIDATE_INT
验证为整数,可以指定范围
FILTER_VALIDATE_FLOAT
验证为浮点数
FILTER_ VALIDATE_REGEXP
匹配一个PCRE正则表达式模式
FILTER_ VALIDATE_URL
匹配一个URL
FILTER_ VALIDATE_EMAIL
匹配一个email地址
FILTER_SANITIZE_STRING
去除超文本标签
FILTER_SANITIZE_ENCODED
对字符串使用URL编码
FILTER_VALIDATE_IP
验证值是否为IP地址
下面举例说明,请见如下脚本:
<?php
var_dump(filter_data(‘ dujiang@ikang.com 为防备电子邮件地址收集器,这个 E-mail 地址被隐藏,你的浏览器必须支持 Javascript 才可看到这个邮件地址 ‘, FILTER_VALIDATE_EMAIL));
var_dump(filter_data(‘sobooo.com’, FILTER_VALIDATE_EMAIL));
?>
该脚本会输出如下的内容:
string(15) ” dujiang@ikang.com 为防备电子邮件地址收集器,这个 E-mail 地址被隐藏,你的浏览器必须支持 Javascript 才可看到这个邮件地址 ”
NULL
由于字符串”sobooo.com”因为不是邮件地址的格式,因此被过滤后,显示为NULL值。
再看下面使用filter_input验证表单的脚本例子:
<?php
// 如使用FILTER_VALIDATE_INT验证用户输入的QQ号码,表单有一个文本框名字为qq:
$qq = filter_input(INPUT_POST, ‘qq’, FILTER_VALIDATE_INT);
if (!empty($qq)) {
echo “<p>您的QQ号码: $qq</p>\n”;
} else {
echo ‘<p>请输入正确的QQ号码(应为纯数字)</p>’;
}
//使用URL 编码
$url = “http://post.sina.com.cn/file.php?a=1&b=编码”;
//显示被编码后的URL地址
echo filter_var($url, FILTER_SANITIZE_ENCODED);
?>
i hope so
what a nice post.what a great website
) thanks
This is a fine example.
I guess I had to think more about what you wrote before i can comment on it..
Have a great day.
LOADS OF SUNSHINE TO BE ON YOU TODAY.
Whoop whoop. I have a feeling this is becoming the best.Keep it up!:)
Even though it will not be here tomorrow, the effect of it will.
Hallelujah!
These words mean a great deal to me today. Truly, it is necessary to let go – I see that.
Well that’s a honest and true quotation
It’s heroic.It is as the candle burns itself to give light to others.