Нередко перед web-разработчиком встает задача защиты сайта от вредоносного кода. Один из способов защиты – это очистить переменные перед тем, как их куда-то передавать дальше. Например переменные, значения которых скрипт получает из полей формы, расположенной на сайте. В частности нужно убрать кавычки (двойные и одинарные, очистить пробелы вначале и в конце, очистить переменную о символов, типа ^, $, 8 и т.д.)
Давайте разберем несколько отдельных примеров того, как можно очистить переменную от разного мусора.
Убираем пробелы
Для того, чтобы очистить переменную от пробела вначале и вконце, есть стандартная PHP-функция trim();
На практике это выглядит так:
$var = trim($var);
Мы взяли переменную $var, обработали функцией trim() и результат поместили снова в переменную $var. Теперь в $var содержимое будет без пробелов вначале и вконце.
Удаляем кавычки
Для этого можно использовать функцию str_replace(), которая заменяет указанный символ в строке на другой, указанный символ. Выглядит это так:
$string = str_replace('"', "", $string); $string = str_replace("'", "", $string);
Убираем лишние символы – 1 способ
В данном случае можно опять-же использовать функцию str_replace(). Например, убираем символ ^ из переменной.
$string = str_replace("^", "", $string);
Мы просто заменили символ ^ на ничто. То есть вырезали его из переменной.
Также поступаем с символом *:
$string = str_replace("*", "", $string);
Убираем лишние символы – 2 способ
Если нам надо удалить из строки большое количество символов, то можно оптимизировать наш код. Это необходимо для того, чтобы не писать много лишнего кода.
Создаем массив, в которой помещаем наши символы (от которых хотим избавиться) и сопоставляем их с пустотой (на которую эти символы будут заменены)
$arr = array("^"=>"", "*"=>""); // создали массив, в котором присвоили пустоту для ключей-символов
Далее обрабатываем переменную, которую нужно очистить от ненужных символов таким образом
$return = strtr($var,$arr); // обработали переменную var, заменив символы пустотой
Мы создали $return в которую поместили очищенную о лишних символов переменную var.
Полезная функция для обработки переменной
Можно объединить несколько приемов обработки переменных в одну функцию. Например – как одной функцией вырезать кавычки, символы ^ и *, а еще убрать пробелы вначале и в конце переменной? Можно использовать такой прием:
function PROTECT($var){ $arr = array("^"=>"", "*"=>""); // создали массив, в котором присвоили пустоту для ключей-символов $return = strtr($var,$arr); // обработали переменную var, замеив символы пустотой $return = str_replace('"', "", $return); // убрали двойные кавычки $return = str_replace("'", "", $return); // убрали одинарные кавычки $return = trim($return); // убрали пробелы вначале и вконце return $return; // возвращаем результат работы функции }
Теперь, чтобы очистить переменную от символов и пробелов, достаточно обработать ее одной функцией:
$var_new = PROTECT($var);
В итоге имеем переменную $var_new, в которой находятся очищенные данные переменной var.