|
|
|
| Функция фильтрации вводимых данных:
<?php
// Фильтрация ввода;
function strips(&$a) {
// Проверка переменной;
if (isset($a) and is_array($a)) {
foreach($a as $k=>$v) {
// Рекурсивный вызов функции;
strips($a[$k]);
}
} else {
// Удаление экранирования;
if (get_magic_quotes_gpc()) {
$a = stripslashes($a);
}
// Обработка строк для помещения в БД;
$a = mysql_escape_string($a);
}
}
?>
|
Пример использования функции:
<?php
// Фильтрация $_GET;
strips($_GET);
// Фильтрация $_POST;
strips($_POST);
// Фильтрация $_COOKIE;
strips($_COOKIE);
?>
|
| |
|
|
|
|
|
|
|
для: Петр
(07.07.2008 в 12:39)
| | Зачем?
Уже даже разработчики php поняли, что magic quotes - ересь мерзкая... | |
|
|
|
|
|
|
|
для: Trianon
(07.07.2008 в 13:33)
| | поэтому и есть проверка, т.к. на некоторых хостингах разные настройки этих кавычек | |
|
|
|
|
|
|
|
для: Петр
(07.07.2008 в 13:55)
| | В подавляющем большинстве случаев отключение магических кавычек
решается посредством добавления одной строки в .htaccess :
php_flag magic_quotes_gpc Off
|
Ваш же код, наоборот, приводит к тому, что вся эта магическая дрянь будет добавляться, когда надо и не надо. | |
|
|
|
|
|
|
|
для: Trianon
(07.07.2008 в 14:16)
| | да это понятно, но всетаки не везда такое бывает.
а участок кода:
if (get_magic_quotes_gpc()) {
$a = stripslashes($a);
}
|
как раз делаю эту функцию универсальной, и даже не нужно думать как настроен тот или иной сервер, она сама все сделает.
здесь принцып другой: если магические кавычки успользуются, то экранирование удалиться (только когда надо) | |
|
|
|
|
|
|
|
для: Петр
(07.07.2008 в 14:18)
| | Если бы вы не написали $a = mysql_escape_string($a);
Я бы счел Вашу функцию полезной, и слова бы не сказал.
В конце концов в рамках серверов, где до переменных конфигурации php не дотянуться, это действительно выход из положения. | |
|
|
|
|
|
|
|
для: Trianon
(07.07.2008 в 14:34)
| | >В конце концов в рамках серверов, где до переменных конфигурации php не дотянуться, это действительно выход из положения.
Вот Вы и ответили на вопрос. Некоторые хостинги обеспечивают для себя полную безопасность, отключая, что надо и что не надо. Хотя иногда с их точки зрения смотреть, это логично. Но в некоторых случаях они предоставляют возможность под пользователя, конфигурировать свой php.ini для запуска в cgi-режиме. | |
|
|
|
|
|
|
|
для: AcidTrash
(07.07.2008 в 21:48)
| | >>В конце концов в рамках серверов, где до переменных конфигурации php не дотянуться, это действительно выход из положения.
>Вот Вы и ответили на вопрос.
Не надо передергивать мои слова.
Под выходом из положения подразумевался код без вызова mysql_escape_string() | |
|
|
|
|
|
|
|
для: Trianon
(07.07.2008 в 22:12)
| | >Под выходом из положения подразумевался код без вызова mysql_escape_string()
Если имелся ввиду код
if (get_magic_quotes_gpc()) {
$a = stripslashes($a);
}
|
то да. | |
|
|
|