PHP ¹ýÂËÆ÷£¨Filter£©
PHP ¹ýÂËÆ÷ÓÃÓÚÑéÖ¤ºÍ¹ýÂËÀ´×Էǰ²È«À´Ô´µÄÊý¾Ý£¬±ÈÈçÓû§µÄÊäÈë¡£
ʲôÊÇ PHP ¹ýÂËÆ÷£¿
PHP ¹ýÂËÆ÷ÓÃÓÚÑéÖ¤ºÍ¹ýÂËÀ´×Էǰ²È«À´Ô´µÄÊý¾Ý¡£
ÑéÖ¤ºÍ¹ýÂËÓû§ÊäÈë»ò×Ô¶¨ÒåÊý¾ÝÊÇÈκΠWeb Ó¦ÓóÌÐòµÄÖØÒª×é³É²¿·Ö¡£
Éè¼Æ PHP µÄ¹ýÂËÆ÷À©Õ¹µÄÄ¿µÄÊÇʹÊý¾Ý¹ýÂ˸üÇáËÉ¿ì½Ý¡£
ΪʲôʹÓùýÂËÆ÷£¿
¼¸ºõËùÓÐ web Ó¦ÓóÌÐò¶¼ÒÀÀµÍⲿµÄÊäÈë¡£ÕâЩÊý¾Ýͨ³£À´×ÔÓû§»òÆäËûÓ¦ÓóÌÐò£¨±ÈÈç web ·þÎñ£©¡£Í¨¹ýʹÓùýÂËÆ÷£¬ÄúÄܹ»È·±£Ó¦ÓгÌÐò»ñµÃÕýÈ·µÄÊäÈëÀàÐÍ¡£
ÄúÓ¦¸ÃʼÖÕ¶ÔÍⲿÊý¾Ý½øÐйýÂË£¡
ÊäÈë¹ýÂËÊÇ×îÖØÒªµÄÓ¦ÓóÌÐò°²È«¿ÎÌâÖ®Ò»¡£
ʲôÊÇÍⲿÊý¾Ý£¿
- À´×Ô±íµ¥µÄÊäÈëÊý¾Ý
- Cookies
- ·þÎñÆ÷±äÁ¿
- Êý¾Ý¿â²éѯ½á¹û
º¯ÊýºÍ¹ýÂËÆ÷
ÈçÐè¹ýÂ˱äÁ¿£¬ÇëʹÓÃÏÂÃæµÄ¹ýÂËÆ÷º¯ÊýÖ®Ò»£º
- filter_var() - ͨ¹ýÒ»¸öÖ¸¶¨µÄ¹ýÂËÆ÷À´¹ýÂ˵¥Ò»µÄ±äÁ¿
- filter_var_array() - ͨ¹ýÏàͬµÄ»ò²»Í¬µÄ¹ýÂËÆ÷À´¹ýÂ˶à¸ö±äÁ¿
- filter_input - »ñȡһ¸öÊäÈë±äÁ¿£¬²¢¶ÔËü½øÐйýÂË
- filter_input_array - »ñÈ¡¶à¸öÊäÈë±äÁ¿£¬²¢Í¨¹ýÏàͬµÄ»ò²»Í¬µÄ¹ýÂËÆ÷¶ÔËüÃǽøÐйýÂË
ÔÚÏÂÃæµÄÀý×ÓÖУ¬ÎÒÃÇÓà filter_var() º¯ÊýÑéÖ¤ÁËÒ»¸öÕûÊý£º
<?php
$int = 123;
if(!filter_var($int, FILTER_VALIDATE_INT)
)
{
echo("Integer is not valid");
}
else
{
echo("Integer is valid");
}
?>
ÉÏÃæµÄ´úÂëʹÓÃÁË "FILTER_VALIDATE_INT" ¹ýÂËÆ÷À´¹ýÂ˱äÁ¿¡£ÓÉÓÚÕâ¸öÕûÊýÊǺϷ¨µÄ£¬Òò´Ë´úÂëµÄÊä³öÊÇ£º"Integer is valid"¡£
¼ÙÈçÎÒÃdz¢ÊÔʹÓÃÒ»¸ö·ÇÕûÊýµÄ±äÁ¿£¬ÔòÊä³öÊÇ£º"Integer is not valid"¡£
ÈçÐèÍêÕûµÄº¯ÊýºÍ¹ýÂËÆ÷ÁÐ±í£¬Çë·ÃÎÊÎÒÃÇµÄ PHP Filter ²Î¿¼Êֲᡣ
Validating ºÍ Sanitizing
ÓÐÁ½ÖÖ¹ýÂËÆ÷£º
Validating ¹ýÂËÆ÷£º
- ÓÃÓÚÑéÖ¤Óû§ÊäÈë
- ÑϸñµÄ¸ñʽ¹æÔò£¨±ÈÈç URL »ò E-Mail ÑéÖ¤£©
- Èç¹û³É¹¦Ôò·µ»ØÔ¤ÆÚµÄÀàÐÍ£¬Èç¹ûʧ°ÜÔò·µ»Ø FALSE
Sanitizing ¹ýÂËÆ÷£º
- ÓÃÓÚÔÊÐí»ò½ûÖ¹×Ö·û´®ÖÐÖ¸¶¨µÄ×Ö·û
- ÎÞÊý¾Ý¸ñʽ¹æÔò
- ʼÖÕ·µ»Ø×Ö·û´®
Ñ¡ÏîºÍ±êÖ¾
Ñ¡ÏîºÍ±êÖ¾ÓÃÓÚÏòÖ¸¶¨µÄ¹ýÂËÆ÷Ìí¼Ó¶îÍâµÄ¹ýÂËÑ¡Ïî¡£
²»Í¬µÄ¹ýÂËÆ÷Óв»Í¬µÄÑ¡ÏîºÍ±êÖ¾¡£
ÔÚÏÂÃæµÄÀý×ÓÖУ¬ÎÒÃÇÓà filter_var() ºÍ "min_range" ÒÔ¼° "max_range" Ñ¡ÏîÑéÖ¤ÁËÒ»¸öÕûÊý£º
<?php
$var=300;
$int_options = array(
"options"=>array
(
"min_range"=>0,
"max_range"=>256
)
);
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)
)
{
echo("Integer is not valid");
}
else
{
echo("Integer is valid");
}
?>
¾ÍÏñÉÏÃæµÄ´úÂëÒ»Ñù£¬Ñ¡Ïî±ØÐë·ÅÈëÒ»¸öÃûΪ "options" µÄÏà¹ØÊý×éÖС£Èç¹ûʹÓñêÖ¾£¬Ôò²»ÐèÔÚÊý×éÄÚ¡£
ÓÉÓÚÕûÊýÊÇ "300"£¬Ëü²»ÔÚÖ¸¶¨µÄ·¶Î§ÄÚ£¬ÒÔÉÏ´úÂëµÄÊä³ö½«ÊÇ "Integer is not valid"¡£
ÈçÐèÍêÕûµÄº¯Êý¼°¹ýÂËÆ÷ÁÐ±í£¬Çë·ÃÎÊ W3School ÌṩµÄ PHP Filter ²Î¿¼ÊֲᡣÄú¿ÉÒÔ¿´µ½Ã¿¸ö¹ýÂËÆ÷µÄ¿ÉÓÃÑ¡ÏîºÍ±êÖ¾¡£
ÑéÖ¤ÊäÈë
ÈÃÎÒÃÇÊÔ×ÅÑéÖ¤À´×Ô±íµ¥µÄÊäÈë¡£
ÎÒÃÇÐèÒª×÷µÄµÚÒ»¼þÊÂÇéÊÇÈ·ÈÏÊÇ·ñ´æÔÚÎÒÃÇÕýÔÚ²éÕÒµÄÊäÈëÊý¾Ý¡£
È»ºóÎÒÃÇÓà filter_input() º¯Êý¹ýÂËÊäÈëµÄÊý¾Ý¡£
ÔÚÏÂÃæµÄÀý×ÓÖУ¬ÊäÈë±äÁ¿ "email" ±»´«µ½ PHP Ò³Ãæ£º
<?php
if(!filter_has_var(INPUT_GET, "email"))
{
echo("Input type does not exist");
}
else
{
if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)
)
{
echo "E-Mail is not valid";
}
else
{
echo "E-Mail is valid";
}
}
?>
Àý×Ó½âÊÍ£º
ÉÏÃæµÄÀý×ÓÓÐÒ»¸öͨ¹ý "GET" ·½·¨´«Ë͵ÄÊäÈë±äÁ¿ (email)£º
- ¼ì²âÊÇ·ñ´æÔÚ "GET" ÀàÐ굀 "email" ÊäÈë±äÁ¿
- Èç¹û´æÔÚÊäÈë±äÁ¿£¬¼ì²âËüÊÇ·ñÊÇÓÐЧµÄÓʼþµØÖ·
¾»»¯ÊäÈë
ÈÃÎÒÃÇÊÔ×ÅÇåÀíÒ»ÏÂ´Ó±íµ¥´«À´µÄ URL¡£
Ê×ÏÈ£¬ÎÒÃÇҪȷÈÏÊÇ·ñ´æÔÚÎÒÃÇÕýÔÚ²éÕÒµÄÊäÈëÊý¾Ý¡£
È»ºó£¬ÎÒÃÇÓà filter_input() º¯ÊýÀ´¾»»¯ÊäÈëÊý¾Ý¡£
ÔÚÏÂÃæµÄÀý×ÓÖУ¬ÊäÈë±äÁ¿ "url" ±»´«µ½ PHP Ò³Ãæ£º
<?php
if(!filter_has_var(INPUT_POST, "url"))
{
echo("Input type does not exist");
}
else
{
$url = filter_input(INPUT_POST, "url", FILTER_SANITIZE_URL)
;
}
?>
Àý×Ó½âÊÍ£º
ÉÏÃæµÄÀý×ÓÓÐÒ»¸öͨ¹ý "POST" ·½·¨´«Ë͵ÄÊäÈë±äÁ¿ (url)£º
- ¼ì²âÊÇ·ñ´æÔÚ "POST" ÀàÐ굀 "url" ÊäÈë±äÁ¿
- Èç¹û´æÔÚ´ËÊäÈë±äÁ¿£¬¶ÔÆä½øÐо»»¯£¨É¾³ý·Ç·¨×Ö·û£©£¬²¢½«Æä´æ´¢ÔÚ $url ±äÁ¿ÖÐ
¼ÙÈçÊäÈë±äÁ¿ÀàËÆÕâÑù£º"http://www.W3·Ço·¨ol.com.c×Ö·ûn/"£¬Ôò¾»»¯ºóµÄ $url ±äÁ¿Ó¦¸ÃÊÇÕâÑùµÄ£º
http://www.W3School.com.cn/
¹ýÂ˶à¸öÊäÈë
±íµ¥Í¨³£Óɶà¸öÊäÈë×Ö¶Î×é³É¡£ÎªÁ˱ÜÃâ¶Ô filter_var »ò filter_input ÖØ¸´µ÷Óã¬ÎÒÃÇ¿ÉÒÔʹÓà filter_var_array »ò the filter_input_array º¯Êý¡£
ÔÚ±¾ÀýÖУ¬ÎÒÃÇʹÓà filter_input_array() º¯ÊýÀ´¹ýÂËÈý¸ö GET ±äÁ¿¡£½ÓÊÕµ½µÄ GET ±äÁ¿ÊÇÒ»¸öÃû×Ö¡¢Ò»¸öÄêÁäÒÔ¼°Ò»¸öÓʼþµØÖ·£º
<?php
$filters = array
(
"name" => array
(
"filter"=>FILTER_SANITIZE_STRING
),
"age" => array
(
"filter"=>FILTER_VALIDATE_INT,
"options"=>array
(
"min_range"=>1,
"max_range"=>120
)
),
"email"=> FILTER_VALIDATE_EMAIL,
);
$result = filter_input_array(INPUT_GET, $filters)
;
if (!$result["age"])
{
echo("Age must be a number between 1 and 120.<br />");
}
elseif(!$result["email"])
{
echo("E-Mail is not valid.<br />");
}
else
{
echo("User input is valid");
}
?>
Àý×Ó½âÊÍ£º
ÉÏÃæµÄÀý×ÓÓÐÈý¸öͨ¹ý "GET" ·½·¨´«Ë͵ÄÊäÈë±äÁ¿ (name, age and email)
- ÉèÖÃÒ»¸öÊý×飬ÆäÖаüº¬ÁËÊäÈë±äÁ¿µÄÃû³Æ£¬ÒÔ¼°ÓÃÓÚÖ¸¶¨µÄÊäÈë±äÁ¿µÄ¹ýÂËÆ÷
- µ÷Óà filter_input_array º¯Êý£¬²ÎÊý°üÀ¨ GET ÊäÈë±äÁ¿¼°¸Õ²ÅÉèÖõÄÊý×é
- ¼ì²â $result ±äÁ¿ÖÐµÄ "age" ºÍ "email" ±äÁ¿ÊÇ·ñÓзǷ¨µÄÊäÈë¡££¨Èç¹û´æÔÚ·Ç·¨ÊäÈ룬£©
filter_input_array() º¯ÊýµÄµÚ¶þ¸ö²ÎÊý¿ÉÒÔÊÇÊý×é»òµ¥Ò»¹ýÂËÆ÷µÄ ID¡£
Èç¹û¸Ã²ÎÊýÊǵ¥Ò»¹ýÂËÆ÷µÄ ID£¬ÄÇôÕâ¸öÖ¸¶¨µÄ¹ýÂËÆ÷»á¹ýÂËÊäÈëÊý×éÖÐËùÓеÄÖµ¡£
Èç¹û¸Ã²ÎÊýÊÇÒ»¸öÊý×飬ÄÇô´ËÊý×鱨Ðë×ñÑÏÂÃæµÄ¹æÔò£º
- ±ØÐëÊÇÒ»¸ö¹ØÁªÊý×飬ÆäÖаüº¬µÄÊäÈë±äÁ¿ÊÇÊý×éµÄ¼ü£¨±ÈÈç "age" ÊäÈë±äÁ¿£©
- ´ËÊý×éµÄÖµ±ØÐëÊǹýÂËÆ÷µÄ ID £¬»òÕßÊǹ涨Á˹ýÂËÆ÷¡¢±êÖ¾ÒÔ¼°Ñ¡ÏîµÄÊý×é
ʹÓà Filter Callback
ͨ¹ýʹÓà FILTER_CALLBACK ¹ýÂËÆ÷£¬¿ÉÒÔµ÷ÓÃ×Ô¶¨ÒåµÄº¯Êý£¬°ÑËü×÷Ϊһ¸ö¹ýÂËÆ÷À´Ê¹Óá£ÕâÑù£¬ÎÒÃǾÍÓµÓÐÁËÊý¾Ý¹ýÂ˵ÄÍêÈ«¿ØÖÆÈ¨¡£
Äú¿ÉÒÔ´´½¨×Ô¼ºµÄ×Ô¶¨Ò庯Êý£¬Ò²¿ÉÒÔʹÓÃÒÑÓÐµÄ PHP º¯Êý¡£
¹æ¶¨Äú×¼±¸Óõ½¹ýÂËÆ÷º¯ÊýµÄ·½·¨£¬Óë¹æ¶¨Ñ¡ÏîµÄ·½·¨Ïàͬ¡£
ÔÚÏÂÃæµÄÀý×ÓÖУ¬ÎÒÃÇʹÓÃÁËÒ»¸ö×Ô¶¨ÒåµÄº¯Êý°ÑËùÓÐ "_" ת»»Îª¿Õ¸ñ£º
<?php
function convertSpace($string)
{
return str_replace("_", " ", $string);
}
$string = "Peter_is_a_great_guy!";
echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace"))
;
?>
ÒÔÉÏ´úÂëµÄ½á¹ûÊÇÕâÑùµÄ£º
Peter is a great guy!
Àý×Ó½âÊÍ£º
ÉÏÃæµÄÀý×Ó°ÑËùÓÐ "_" ת»»³É¿Õ¸ñ£º
- ´´½¨Ò»¸ö°Ñ "_" Ìæ»»Îª¿Õ¸ñµÄº¯Êý
- µ÷Óà filter_var() º¯Êý£¬ËüµÄ²ÎÊýÊÇ FILTER_CALLBACK ¹ýÂËÆ÷ÒÔ¼°°üº¬ÎÒÃǵĺ¯ÊýµÄÊý×é