Если вы хотите, чтобы дезинфицировать все элементы в $_POST
, то вы можете просто создать функцию санитарной обработки и применения это все элементы с array_map
:
$post_clean = array_map("sanitization_function", $_POST);
Тогда вы бы получить доступ к переменным через $post_clean
вместо $_POST
.
Было бы выглядеть примерно так:
function sanitize($dirty){
return preg_replace("/[^a-zA-Z0-9_]/", "", $dirty);
}
$cPOST = array_map("sanitize", $_POST);
if (!strlen($cPOST['username'])){
die("username is blank!");
}
Если вы только хотели, чтобы дезинфицировать подмножество $_POST
элементов, вы могли бы сделать что-то вроде:
$cPOST = array();
$sanitize_keys = array('username','someotherkeytosanitize');
foreach($_POST as $k=>$v)
{
if(in_array($k, $sanitize_keys))
{
$cPOST[$k] = preg_replace("/[^a-zA-Z0-9_]/", "", $v);
}
else
{
$cPOST[$k] = $v;
}
}
Попробуйте это:
$cPOST = array();
$sanitize_keys = array('username','someotherkeytosanitize');
for($_POST as $k=>$v)
{
if(in_array($k, $sanitize_keys))
{
$cPOST[$k] = preg_replace("/[^a-zA-Z0-9_]/", "", $v);
if(strlen($cPOST[$k]) == 0){
die("%s is blank", $k);
}
}
else
{
$cPOST[$k] = $v;
}
}
# At this point, the variables in $cPOST are the same as $_POST, unless you
# specified they be sanitized (by including them in the $sanitize_keys array.
# Also, if you get here, you know that the entries $cPOST that correspond
# to the keys in $sanitize_keys were not blank after sanitization.
Просто не забудьте изменить $ sanitize_keys на массив любых переменных (или ключей $ _POST), которые вы хотите дезинфицировать.
Спасибо, так значит, мне все равно нужно применять инструкцию if к каждому входу? – user1278496
@user: Да, вы бы это сделали. Вы хотите, чтобы сценарий «die()», если какой-либо из элементов пуст? – jedwards
yes mate i would – user1278496