Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > magic_quotes_runtime и PHP 5.3+


Автор: Gold Dragon 15.6.2012, 18:25
Появился PHP5.3 и magic_quotes_runtime стала устаревшей, а в будущем неприемлемой. Как грамотно изменить подобные ситуации в проекте и избавится от проверки и дальнейшей (в зависимости от результата) обработки поступающих данных?

решения по экранированию при помощи @ не нужно рассматривать в этой теме

Добавлено @ 18:32
что-то с тупил... ini_set()  smile

Добавлено через 10 минут и 6 секунд
хотя так и не понял из документации вообще этот параметр будет или не будет в PHP

Автор: Wolf1994 16.6.2012, 09:18
Проверьте http://www.php.net/manual/ru/function.function-exists.php функции.

Автор: Gold Dragon 16.6.2012, 09:21
да я вообще больше про само экранирование.. не совсем понятно как будет осуществляться экранирование в будущем

Автор: Wolf1994 16.6.2012, 09:43
Кавычки будут отключены в новых версиях без возможности включения. В старых - отключаются через http://www.php.net/manual/ru/function.set-magic-quotes-runtime.php. Для определения разницы можно проверять версию PHP или существование соответсвующего функционала.

Считается, что экранирование правильно делать http://php.net/manual/en/security.magicquotes.php:

Цитата

Magic Quotes is a process that automagically escapes incoming data to the PHP script. It's preferred to code with magic quotes off and to instead escape the data at runtime, as needed. 

Автор: Sanchezzz 16.6.2012, 14:04
а я не отрубаю мне они не мешают просто в точке инициализации конфига и базовых функций использую stripslashes на глобальные переменные
Код

if(  ( function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc() == 1 ) ){
  stripslashes_array($_GET);
  stripslashes_array($_POST);
  stripslashes_array($_COOKIE); 
  stripslashes_array($_REQUEST);
  if (isset($_SERVER['PHP_AUTH_USER'])) stripslashes_array($_SERVER['PHP_AUTH_USER']); 
  if (isset($_SERVER['PHP_AUTH_PW']))   stripslashes_array($_SERVER['PHP_AUTH_PW']);
}


Код

function stripslashes_array($array) {
  return is_array($array) ?
    array_map('stripslashes_array', $array) : stripslashes($array);
}

Автор: Gold Dragon 16.6.2012, 15:01
Я пишу CMS (вернее развиваю). Так вот, сейчас полностью отказываемся от поддержки PHP <5.3
По этому и вопрос, может сразу использовать разэкранирование и не проверять существует или нет поддержка

Автор: teroni 18.6.2012, 02:03
ИМХО, CMS надо делать так, чтобы она беспроблемно работала на любой версии php (в рамках разумного конечно, на те версии, которые используются меньше 1% юзеров можно забить).
Проще кодеру написать несколько (десятков) лишних строчек, чем каждому из юзеров добиваться повышения своей версии до 5.3+.

Автор: Gold Dragon 18.6.2012, 08:08
Цитата(teroni @  18.6.2012,  03:03 Найти цитируемый пост)
ИМХО, CMS надо делать так, чтобы она беспроблемно работала на любой версии php
Условие определили. Проще говоря, не нравится, используй старую версию ну или другую CMS. Поддержка нескольких версий - это трата времени, а следовательно и денег smile Практически везде уже 5.3+ ну и тем более точно будет к стабилизации новой версии...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)