magic quotes gpc что это

get_magic_quotes_gpc

get_magic_quotes_gpc — Получение текущего значения настройки конфигурации magic_quotes_gpc

Эта функция УСТАРЕЛА, начиная с PHP 7.4.0 и была УДАЛЕНА, начиная с PHP 8.0.0. Использовать эту функцию крайне не рекомендуется.

Описание

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Список изменений

ВерсияОписание
7.4.0Функция объявлена устаревшей.

Смотрите также

User Contributed Notes 10 notes

@ dot dot dot dot dot alexander at gmail dot com

I suggest replacing foreach by «stripslashes_deep»:

Re: php at kaiundina dot de (03-Feb-2005 02:18)

1. magic_quotes_gpc=on/off and magic_quotes_sybase=on/off

I made test and your function worked right.
These were the names I used:
name=»a»
name=»b.b b\b»
name=»c[c.1]»
name=»c[c 2]»
name=»c[c\3]»
name=»c.c c[c.’ 4]»
name=»c ‘ c[c»4]»
name=»d»[d»1]»

(I used » because I don’t know other way to put » into the name)

and the user-input value:
a ‘ » \ \’ \» \\ a

2. > 17) The chars ‘.’, ‘ ‘ are always replaced by ‘_’ when used in keys.

This is true only for the top-level keys, such as «b.b b\b», «c.c c» and «c ‘ c» above. The second-level key «[c.’ 4]» was not changed to [c_’_4] but was escaped acording to how magic_quites_XXX are set.

These magic_quotes are really black magic 🙁

Here’s what I came up with to remove magic quotes from request data.

Replaces two single-quotes with one if magic_quotes_sybase are on, otherwise it just strips slashes.

Note that the `foreach` style makes this work only with PHP 5 and above.

Escaping of key-strings in GPC-arrays behave different to the escaping of their values.

First I expected that keys in submitted gpc-arrays are never escaped.
Anyway. After I saw escaped keys, I assumed they’re escaped according to the settings of magic quotes.
. it’s even worse.

It took me over 2 days of testing to figure out the exact behavior and creating two functions (one for each php-version) that strips slashes reliably from any array submitted to a script. Hope this saves someones time and nerves.

== legend for possible case combinations ==
Px = php version we’re using
P4 = php 4.3.9
P5 = php 5.0.2

MQ = MagicQuotes GPC
+MQ = magic quotes enabled
-MQ = magic quotes disabled

AK = ArrayKey
+AK = the value of the key is another array (i.e. is_array($_GET[‘myKey’]) == true)
-AK = the value is a normal string (i.e. is_string($_GET[‘myKey’]) == true)

== legend for possible results ==
KE = KeyEscaping
+KE = control chars are prefixed with a backslash
-KE = key is returned as submitted and needn’t to be stripped

VE = ValueEscaping (doesn’t apply for array as value)
+VE = control chars are prefixed with a backslash
-VE = value is returned as submitted and needn’t to be stripped

Example (rule 15):
When running under php 5.0.2 having magic quotes disabled, gpc-keys on top level containing strings are escaped while their associated values are not.

== The following function will strip GPC-arrays for php 4.3.9 ==

When you work with forms and databases you should use this concept:

$query=’INSERT INTO users SET fullname=»‘.add_slashes($_POST[‘fullname’]).'»‘;
insert_into_db($query);

2.When reading a previously submitted input from DB use html_special_chars to display an escaped result!

read_db_row(‘SELECT fullname FROM users’);
echo ‘

this way you safely store and work with the original(unescaped) data.

> «If the directive magic_quotes_sybase is ON it will completely override magic_quotes_gpc.»

This «note» is a bit misleading. magic_quotes_sybase will only override the escaping method used on Get/Post/Cookie data if magic_quotes_gpc is already enabled. If magic_quotes_gpc is not enabled then magic_quotes_sybase will have no effect here.

A few of the other comments are therefore incorrect in determining when to «stripslashes» from the input, by «stripping slashes» when either magic_quotes_gpc OR magic_quotes_sybase is enabled. You should only stripslashes() when magic_quotes_gpc is enabled since that is the only time when slashes are automatically added.

stripslashes() is also magic_quotes_sybase aware, so you don’t need to do anything special (ie. write a custom function to handle this situation as another comment suggests) when magic_quotes_sybase is enabled. When magic_quotes_sybase is enabled, stripslashes() does not actually strip any slashes, but instead unescapes single-quotes that are escaped with single-quotes only.

magic_quotes_sybase does however influence the escaping (and unescaping) method used by addslashes() and stripslashes() respectively, regardless of whether magic_quotes_gpc (or magic_quotes_runtime) is enabled.

Regarding the three main strip methods as found below (two using foreach, 1 using the json method), I’ve done a little benchmarking using ‘true’ profiling (using a registered tickhandler where declare(ticks=1)).
I wondered whether or not json would not be terribly slow.
I won’t discuss the profiler, but will suffice with the following statement, followed by the used code to benchmark:

The json method was by FAR the quickest (contrary to what I’d thought), so if you need a speedy process, use that!

?>

My output (PHP 5.3.1, win32):
[TickProfiler::tick] => Array
(
[time] => 0.76188707351685
[calls] => 46001
)

[TickProfiler::Register] => Array
(
[time] => 3.0994415283203E-5
[calls] => 1
)

[strip_json] => Array
(
[time] => 0.025638580322266
[calls] => 1000
)

[strip_deep1] => Array
(
[time] => 0.40303444862366
[calls] => 36000
)

[strip_deep2] => Array
(
[time] => 0.14928555488586
[calls] => 9000
)

As can be seen above, using json speeds output by at least a factor of 5 (nearly 6).
Just wanted to share this 😀

Do note the strip_json function has two LOC instead of a plain return statement, otherwise it wouldn’t get picked up by the tickprofiler (it would return from the code immediately, never reaching the profiler)!

Usage of the return statement in strip_deep2 is not needed, as the argument is passed by reference.
A new test showed that the time penalty for this is about 0.09 seconds.

This actually means that the factor between strip_deep2 vs strip_json is only about 2.
Still, strip_json would be about twice as fast as strip_deep2

Источник

Magic quotes gpc что это

Что представляют собой «Волшебные Кавычки»?

Когда «Волшебные Кавычки» включены (активизированы), все (одиночные кавычки), « (двойные кавычки), \ (левый слэш) и NULL знаки автоматически экранируются левыми слэшами (\). Данный принцип аналогичен действию функции addslashes().

Существуют три директивы «Волшебных Кавычек»:

Затрагивает данные запросов HTTP (GET, POST, и COOKIE). Не может быть установлена в процессе работы PHP скрипта и установлена в on по умолчанию.

Если данная директива включена (on), большинство функций, которые возвращают данные из внешнего источника, включая базы данных и текстовые файлы, будут экранировать данные левыми слэшами (\). Может быть установлена во время выполнения PHP скрипта. По умолчанию директива установлена в off.

Если данная директива включена (on), одиночные кавычки экранируются двойными кавычками, вместо левых слэшей (\). Причем если данная директива установлена в on, это полностью отменяет установку директивы magic_quotes_gpc. Включение (on) обеих директив будет означать, что будут экранироваться только одиночные кавычки двойными кавычками («). Двойные кавычки («), левые слэши (\) и NULL останутся нетронутыми.

Смотрите также описание функции ini_get(), которая позволяет получить значения упомянутых директив.

Зачем использовать «Волшебные Кавычки»?

1. Это полезно для начинающих программистов PHP

«Волшебные кавычки» были добавлены в PHP, чтобы помочь начинающим программистам языка PHP избегать фатальных последствий для безопасности системы при ошибках в коде написанных PHP скриптов, причем автоматически, без участия самого программиста. Хотя риск SQL инъекций при этом остается возможным, степень такого риска сводится к минимуму.

2. Это довольно удобно

Для того, чтобы вставлять данные в базу данных, «Волшебные Кавычки» можно не добавлять функцией addslashes() на всех Get, Post, и Cookie запросах, а делать это автоматически.

Почему не нужно использовать «Волшебные Кавычки»?

Включение экранирования и его выключение влияет на вашу мобильность. Используйте функцию get_magic_quotes_gpc() для проверки активной установки конфигурации «Волшебных Кавычек».

Поскольку не каждая часть экранируемых данных используется в базах данных, существует потеря производительности PHP, поскольку обработка данных на предмет необходимости «экранирования» влечет за собой некоторую дополнительную нагрузку на систему. При необходимости произвести «экранирование» данных вы можете просто обращаться к соответствующим функциям (таким как addslashes()) и не пребегать к автоматическому экранированию «Волшебными Кавычками».

Вообще, при установке рекоммендуемых значений директив в файле конфигурации php.ini, автоматическое использование «Волшебних Кавычек» отключено, именно по соображениям производительности.

Поскольку не все данные нуждаются в экранировании, часто раздражет видеть «Волшебные Кавычки» там, где их не должно быть.Например, используя скрипт посылки электронной почту из формы, и видя связку \’ в полученном сообщении электронной почты. А для устанения данной неприятности вам нужно будет часто прибегать к использованию функции stripslashes(), что, согласитесь, не очень удобно.

Отключение «Волшебных Кавычек»

Директива magic_quotes_gpc может быть выключена (off) только на системном уровне, но не во время исполнения скрипта. Так что функция ini_set() в данной ситуации вам не поможет.

Пример 1. Отключение «Волшебных Кавычек» на стороне сервера

Данный пример показывает как установить значение директивы «Волшебных Кавычек» в Off в файле конфигурации php.ini.

Если вам недоступно изменение конфигурационного файла PHP, то вы можете использовать в таком случае .htaccess веб-сервера Apache, используя следующий метод:

Если вам интересен небольшой переносимый PHP код, который позволяет конфигурировать «Волшебные Кавычки» во время исполнения скрипта определенным образом, то для вас ниже приведен листинг этого кода. Этот метод неэффективен, но иногда его использование может помочь. Итак, отключение magic_quotes_gpc во ремя исполнения скрипта PHP.

Пример 2. Альтернативный способ отключения «Волшебных Кавычек» во время исполнения скрипта

Источник

Joomla magic quotes gpc off

magic quotes gpc что это

Вскоре разработчики пришли к выводу, что такой подход не удобен, но хитрые хостеры предпочитают по умолчанию все-таки включать её, по понятным причинам, и не всегда дают возможность ее убрать.

После версии PHP 5.3 данная опция перешла в разряд deprecated(устаревшая), а вскоре и вовсе будет выпилена из php.

magic_quotes_gpc и joomla

А в Joomla до 3-ьей версии magic_quotes_gpc проверялась внутри самого фрэймворка и автоматически предпринималось разэкранирование, в случае, если она была включена. В Joomla 3 эту самую проверку убрали и вместо этого добавили требование версии php > 5.3 при установке. По мне сомнительное решение. Но нытьем проблему не решить, поэтому начинаем делать.

Отключение magic_quotes_gpc

Дописываем в htaccess файл строчку:

php_flag magic_quotes_gpc off

Способ второй. php.ini

Самый правильный способ, но на shared-хостингах как правило не подпускают к настройкам php. Зачастую доступ к php.ini дается через панель хостинга. В остальных случаях, всё просто:

Открываем php.ini, дописываем или редактируем строчку

Способ третий. Хардкод

добавляем эти строки в начало файлов index.php и administrator/index.php

Просто проходимся по массивам входных данных и убираем лишнее. Этот поможет в случае, если необходимо перенести готовый сайт на хостинг, где эта опция включена и это навсегда. Так и случилось со мной, один из моих сайтов на joomla расположился на godaddy, где по умолчанию magic_quotes_gpc включено, а возможности отключить нет.

Источник

Joomla 3.0 и magic_quotes_gpc

magic quotes gpc что это

О волшебных кавычках

Наверное, многие уже знают о том, что волшебные кавычки (magic quotes) были объявлены устаревшими в PHP 5.3 и полностью удалены в PHP 5.4. Для тех, кто не знает всей истории волшебных кавычек, милости просим прочитать официальный мануал на эту тему:

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

С выходом Joomla 3.0 все меняется. Класса JRequest больше нет, так как его заменил класс JInput, в котором нет этой проверки. Впрочем, в этом нет никакой необходимости, так как требования Joomla 3.0 – PHP не ниже версии 5.3.1, и как я уже упоминал ранее, волшебные кавычки были объявлены устаревшими в PHP 5.3. Действительно, зачем тратить ресурс на проверку того, что скоро будет удалено?

Проблема

После некоторых обсуждений в группах Google, было принято решение не городить огород и не пытаться обойти требование Joomla Platform 12 (на которой базируется Joomla 3.0) о выключенных волшебных кавычках. Но что это значит для простого пользователя, который захочет установить Joomla 3.0? А это значит, что при установке нельзя пройти даже первый шаг. Вместо него будет отображаться окно минимальных требований:

magic quotes gpc что это

Но что же делать, ведь многие хостеры форсируют настройку magic_quotes_gpc во «включено»?

Решение проблемы

Итак, при установке Joomla 3.0 вы столкнулись с тем, что волшебные кавычки включены. Как же их отключить? Есть три пути решения этой проблемы:

Источник

LiveInternetLiveInternet

Рубрики

Приложения

Поиск по дневнику

Подписка по e-mail

Друзья

Постоянные читатели

Статистика

Что представляют собой «Волшебные Кавычки»?

Когда «Волшебные Кавычки» включены (активизированы), все (одиночные кавычки), « (двойные кавычки), \ (левый слэш) и NULL знаки автоматически экранируются левыми слэшами (\). Данный принцип аналогичен действию функции addslashes().

Существуют три директивы «Волшебных Кавычек»:

Затрагивает данные запросов HTTP (GET, POST, и COOKIE). Не может быть установлена в процессе работы PHP скрипта и установлена в on по умолчанию.

Смотрите также описание функции get_magic_quotes_gpc().

Если данная директива включена (on), большинство функций, которые возвращают данные из внешнего источника, включая базы данных и текстовые файлы, будут экранировать данные левыми слэшами (\). Может быть установлена во время выполнения PHP скрипта. По умолчанию директива установлена в off.

Смотрите описание функций set_magic_quotes_runtime() и get_magic_quotes_runtime().

Если данная директива включена (on), одиночные кавычки экранируются двойными кавычками, вместо левых слэшей (\). Причем если данная директива установлена в on, это полностью отменяет установку директивы magic_quotes_gpc. Включение (on) обеих директив будет означать, что будут экранироваться только одиночные кавычки двойными кавычками («). Двойные кавычки («), левые слэши (\) и NULL останутся нетронутыми.

Смотрите также описание функции ini_get(), которая позволяет получить значения упомянутых директив.

Зачем использовать «Волшебные Кавычки»?

1. Это полезно для начинающих программистов PHP

«Волшебные кавычки» были добавлены в PHP, чтобы помочь начинающим программистам языка PHP избегать фатальных последствий для безопасности системы при ошибках в коде написанных PHP скриптов, причем автоматически, без участия самого программиста. Хотя риск SQL инъекций при этом остается возможным, степень такого риска сводится к минимуму.

2. Это довольно удобно

Для того, чтобы вставлять данные в базу данных, «Волшебные Кавычки» можно не добавлять функцией addslashes() на всех Get, Post, и Cookie запросах, а делать это автоматически.

Почему не нужно использовать «Волшебные Кавычки»?

Включение экранирования и его выключение влияет на вашу мобильность. Используйте функцию get_magic_quotes_gpc() для проверки активной установки конфигурации «Волшебных Кавычек».

Поскольку не каждая часть экранируемых данных используется в базах данных, существует потеря производительности PHP, поскольку обработка данных на предмет необходимости «экранирования» влечет за собой некоторую дополнительную нагрузку на систему. При необходимости произвести «экранирование» данных вы можете просто обращаться к соответствующим функциям (таким как addslashes()) и не пребегать к автоматическому экранированию «Волшебными Кавычками».

Вообще, при установке рекоммендуемых значений директив в файле конфигурации php.ini, автоматическое использование «Волшебних Кавычек» отключено, именно по соображениям производительности.

Поскольку не все данные нуждаются в экранировании, часто раздражет видеть «Волшебные Кавычки» там, где их не должно быть.Например, используя скрипт посылки электронной почту из формы, и видя связку \’ в полученном сообщении электронной почты. А для устанения данной неприятности вам нужно будет часто прибегать к использованию функции stripslashes(), что, согласитесь, не очень удобно.

Отключение «Волшебных Кавычек»

Директива magic_quotes_gpc может быть выключена (off) только на системном уровне, но не во время исполнения скрипта. Так что функция ini_set() в данной ситуации вам не поможет.

Пример 1. Отключение «Волшебных Кавычек» на стороне сервера

Данный пример показывает как установить значение директивы «Волшебных Кавычек» в Off в файле конфигурации php.ini.

Если вам недоступно изменение конфигурационного файла PHP, то вы можете использовать в таком случае .htaccess веб-сервера Apache, используя следующий метод:

Если вам интересен небольшой переносимый PHP код, который позволяет конфигурировать «Волшебные Кавычки» во время исполнения скрипта определенным образом, то для вас ниже приведен листинг этого кода. Этот метод неэффективен, но иногда его использование может помочь. Итак, отключение magic_quotes_gpc во ремя исполнения скрипта PHP.

Пример 2. Альтернативный способ отключения «Волшебных Кавычек» во время исполнения скрипта

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *