Грешка във функция

Nazi_93

Registered
Здравейте,имам следната функция:
PHP:
 <?php
   
   // Функция за филтриране на данните
    function protect($var){
        if (is_numeric($var)){
            return $var;
        }
        else {
            $for_replace = array('"',"'",';',"<",">","/");
            $replaced_with = array('','','','','','');
            str_replace($for_replace, $replaced_with, $var);
            return htmlspecialchars(addslashes($var));
        }
    } 
    
    //Прихващане на данните
    if (isset($_POST['submit'])){
        $username=protect($_POST['username']);
        echo $username;
    }
   ?>
Проблемът е там,че не ми филтрира променливата (не премахва <>/;'"),иначе htmlspecialchars и addslashes си работят.Къде ми е грешката?
Благодаря предварително!
 
<?php

// Функция за филтриране на данните
function protect($var){
if (is_numeric($var)){
return $var;
}
else {
$for_replace = array('"',"'",';',"<",">","/");
$replaced_with = array('','','','','','');
$var = str_replace($for_replace, $replaced_with, $var);
return htmlspecialchars(addslashes($var));
}
}

//Прихващане на данните
if (isset($_POST['submit'])){
$username=protect($_POST['username']);
echo $username;
}
?>
 
По-добре го направи да маха всички останали знаци, вместо само тия, който си сложил.

<?php

// Функция за филтриране на данните
function protect($var){
if (is_numeric($var)){
return $var;
}
else {
$for_replace = array('"',"'",';',"<",">","/");
$var = preg_replace('/[^\w]+/', '', $var);
return trim(htmlspecialchars(addslashes($var)));
}
}

//Прихващане на данните
$username=protect($_GET['username']);
echo $username;

?>

или

вместо

Код:
$replaced_with = array('','','','','','');
$var = str_replace($for_replace, $replaced_with, $var);

може да го смениш само с

Код:
$var = str_replace($for_replace, '', $var);

но първия вариант е по-добър.
 

Back
Горе