Rumah  >  Artikel  >  php教程  >  php安全过滤与实例教程

php安全过滤与实例教程

WBOY
WBOYasal
2016-05-25 16:40:441568semak imbas

PHP过滤器是一个PHP的扩展,帮助你更容易,并且可靠的验证字符串和变量,这样,你就永远不会有可能对下面语句而担心受怕了:

<?php include($_GET[&#39;filename&#39;]) ?>

甚至更坏的情况:

<?php mysql_query("INSERT INTO table (field) VALUES ({$_POST[&#39;value&#39;]} ");?>

变量过滤:通过使用过滤器来过滤变量,你可以使用 filter_var() 函数,让我们来尝试验证一个变量是否为一个整形,例如:

$variable = 1122;echo filter_var($variable,FILTER_VALIDATE_INT);

因为这个变量里保存的是个整形,所以代码讲显示 1122,如果我们的变量值为"a344", 屏幕上将不会打印出任何内容,因为验证失败了.

也许你说这无非一个有趣的把戏罢了,但是,还有更多,让我们看看,当我们想确认我们的变量是个整形,它的范围在5到10之间,我们怎么做:

<?php 
$variable = 6; 
$minimum_value = 5; 
$minimum_value = 10; 
echo filter_var($variable,FILTER_VALIDATE_INT,array("option"=>array("min_range"=>$minimum_value,"max_range"=>$maximum_value))); 
?>

这样,这个变量则必须在范围之内—就像上面的例子那样—数字6将会被显示在屏幕上.

php提供了一个真正的很好的方法来检测浮点值—对于我们来说最有用的就是在构建购物车的时候用来检查值是否有两位小数点,例如下面将会显示"31.53"是一个合法的浮点数.

$num = 31.53; 
if(filter_var($num,FILTER_VALIDATE_FLOAT)===false){ 
echo $num." 是合法的"; 
}else{ 
echo $num " 是个不合法的浮点数"; 
}

尝尝验证一个URL的格式?你可能需要去查看RFC1738规范,然后打开你的PHP文本编辑器编写一个类,来验证它,这可能需要上千行代码,对不?

好了,实际上,PHP可以通过URL过滤器自动帮你做到这些:

$url = &#39;http://www.phprm.com&#39;; 
if(filter_var($url,FILTER_VALIDATE_URL) === FALSE){ 
echo $url." 不是个合法的 URL<br />"; 
}else{ 
echo $url." 是个合法的URL<br/>";
}

现在,你可能说,你说的这些东西对我没用:邮件验证,对它的验证你肯定得通过正则表达式,不对么? 错了,PHP的FILTER_VALIDATE_EMAIL 可以使它变得非常简单,甚至不费吹灰之力:

$email = &#39;wxysky@phprm.com&#39;; 
if(filter_var($email,FILTER_VALIDATE_EMAIL) === false){ 
echo $email." 不合法"; 
}else{ 
echo $email." 合法"; 
}

现在,你是不是觉得可以花时间来了解一下它呢?电子邮件验证是个大难题,特别对于初学者来说,以我看来,我们应该以拥有它们感到幸福。。。

但是,这些还仅仅不够,让我们在做些其他的是,比如删除字符串的HTML标签,怎样:

<?php 
$string = "<p>text</p>"; 
echo filter_var($string,FILTER_SANITIZE_STRING); 
?>

这样,我们将得到一个不带标签的"text";

结论:在这里,我们看到了PHP过滤器可以做到的几个例子,当然最重要的是验证你的代码—就像我们所有知道的那样,但是实际怎么做确实另一回事,我只想在这里给你,给写代码的朋友,无论你是个新手还是专家—一个被肯定的验证方式,来帮助你从坏的代码逐渐旅行到好的代码中来,你的代码一定是最好的,你可以做到.


本文地址:

转载随意,但请附上文章地址:-)

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:php过滤html标签多种方法 Artikel seterusnya:php sql通用防注入系统