Волшебные кавычки в PHP - PullRequest
       82

Волшебные кавычки в PHP

16 голосов
/ 21 октября 2008

Согласно руководству по PHP , чтобы сделать код более переносимым, для экранирования данных рекомендуется использовать что-то вроде следующего:

if (!get_magic_quotes_gpc()) {
    $lastname = addslashes($_POST['lastname']);
} else {
    $lastname = $_POST['lastname'];
}

У меня есть другие проверочные проверки, которые я буду выполнять, но насколько безопасны вышеприведенные данные с точки зрения экранирования данных? Я также видел, что магические кавычки будут устаревшими в PHP 6. Как это повлияет на приведенный выше код? Я бы предпочел не полагаться на экранирующую функцию для конкретной базы данных, такую ​​как mysql_real_escape_string ().

Ответы [ 12 ]

0 голосов
/ 28 ноября 2008

Вы можете попробовать это:

if (get_magic_quotes_gpc()) { 
          $_REQUEST = array_map('stripslashes', $_REQUEST); 
          $_GET = array_map('stripslashes', $_GET);
          $_POST = array_map('stripslashes', $_POST);
          $_GET = array_map('stripslashes', $_COOKIES);

    }
0 голосов
/ 21 октября 2008

Что касается использования функции экранирования для базы данных, то вам это необходимо. Я обнаружил, что просто использовать addslashes() для сбоя в редких случаях с MySQL. Вы можете написать функцию для экранирования, которая определяет, какую БД вы используете, а затем использовать функцию побега.

...