#php
#php
Вопрос:
У меня повторяющаяся проблема с созданием форм, обрабатываемых PHP: символы '
и "
всегда экранируются
.
Похоже, это происходит еще до того, как данные попадают в PHP, в $_POST
массив.
Поэтому, когда я вставляю ' "
в форму и печатаю ее с помощью PHP, я получаю ' " \
.
Что является причиной этого и какое есть решение?
Комментарии:
1. PHP должен отменить их. где вы сталкиваетесь с тем, что это неправильно?
2. @DanielA. Белый В принципе, я получаю printed на своей странице, когда я
echo
получаю значение из$_POST
Ответ №1:
Вы magic_quotes
включили на своем сервере.
Убедитесь сами с var_dump(get_magic_quotes_gpc())
помощью . Если он печатает 1
, они включены.
Отключите их и обработайте экранирование самостоятельно в контексте, в котором это требуется.
Комментарии:
1. Это правильно. Волшебные кавычки уже давно устарели и, скорее всего, будут удалены в одном из последующих выпусков PHP, поэтому рекомендуется никогда не полагаться на волшебные кавычки. Также волшебные кавычки часто создают больше проблем, чем решают.
2. @Hikaru-Shindo @alex Спасибо за ответ. Боюсь, на данный момент я не могу их отключить, хотя я буду помнить о вашей ссылке. Пока я не проработаю это с администраторами моего сервера, я буду использовать
stripslashes()
3. В настоящее время вы можете использовать set_magic_quotes_runtime() .
Ответ №2:
Проверьте свой php.ini, похоже, что для magic_quotes_gpc установлено значение On . Это приведет к поведению автоматического экранирования. Установите для него значение Off, чтобы отключить это поведение.
Ответ №3:
$_POST = array_map("stripslashes", $_POST);
Ответ №4:
Вы можете вызвать stripslashes
функцию, чтобы удалить косые черты из вывода post. Я думаю, что ваша проблема может быть связана с «волшебными кавычками» или подобными (сейчас устарели):