powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [php] Как отключить экранирование
14 сообщений из 14, страница 1 из 1
[php] Как отключить экранирование
    #38039017
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новая напасть. Отсылаю из js json-строку в post-параметре, а в php получаю {\\\"title\\\":\\\"+asdasd\\\"}. Как это раскукожить?
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38039023
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тынц . Не забываем проверить magic_quotes_gpc , дабы не наступить на грабли в будущем.
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38039239
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle Тынц . Не забываем проверить magic_quotes_gpc , дабы не наступить на грабли в будущем.
Ага, addslashes аж два раза у него как то смогло запуститься. Магик раз, а два?
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38039347
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат,

Мы же не знаем, что происходит ни на стороне клиента, ни на сервере до того момента как Shitbox2 увидел этот код... Мож и в самом деле все входные переменные не глядя через addslashes проходят, а мож жабаскрипт так формирует отправку :-)
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38039431
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вся я знаю. Сам же формирую и отправляю. У клиента:
Код: javascript
1.
2.
3.
4.
5.
6.
JSON.stringify(item.data)

var formData = new FormData();
formData.append((item.fieldName || 'file'), item.file);
formData.append((item.fieldName || 'file'), item.data);
xhr.send(formData);


Т.е. данные я отправляю в сгенерированном автоматически поле формы вместе с файлом.

В PHP json_decode соответственно.

Намучился уже с этим json! Каждый раз по-разному отправляется! На локальной машине одно, на одном сервере другое, на другом третье! Есть какой-нибудь универсальный способ отправки? Или можно в php-скрипт внести код, который будет править PHP.ini, чтобы вручную не делать каждый раз?
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38039464
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2Или можно в php-скрипт внести код, который будет править PHP.ini, чтобы вручную не делать каждый раз?Идея, достойная барона Мюнхаузена! Вот только абсолютно не универсальная.
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38039481
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что универсальное? Даже ладно, какие настройки оптимальны на сегодняшний день для отправки json данных в utf8?
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38039571
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Универсальное - проверка и установка по возможности нужных настроек. Проблема в том, что не все настройки можно установить непосредственно из скрипта. Зато, практически все можно проверить. И в соответствии с имеющимися настройками выполнять ту или иную обработку данных.

Правка же php.ini мало приемлема из-за ограничений. На шаред-хостинге править общий конфиг никто не даст. Зато, в зависимости от вида установки PHP и вебсервера можно управлять некоторыми настройками либо через .htaccess (модуль), либо через php.ini в папке выполняемого скрипта (при использовании suphp), либо через отдельный файл конфигурации, либо через панель управления хостингом.
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38039646
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, а конкретно для json какие должны быть настройки?
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38039869
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего особенного json собой не представляет. Обычная строка текста.
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38039935
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж, обычная...
В этом случае помогло json_decode(stripslashes($_POST['data']), true);

В аналогичном случае на другом сервере (правда там форма не генерировалась автоматически) пришлось использовать
json_decode(htmlspecialchars_decode($_POST['data']), true);

Если же не загонять json-строку в $_POST['data'], а передавать напрямую функцией $.ajax, то работает обычный json_decode, причем работает даже если предварительно закодировать строку encodeURIComponent().

Так что обычную json-строку сервер кодирует как ему вздумается, то специальные символы добавит, то экранирует слешами, то удалит чего-то...
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38040072
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2то удалит чего-то...Упс! И чего-же удаляет? Есть пример?
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38040459
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, если мы кодируем в encodeURIComponent(), а json_decode это нормально обрабатывает, значит заменяет там что-то)
...
Рейтинг: 0 / 0
[php] Как отключить экранирование
    #38040487
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2кодируем в encodeURIComponent(), а json_decode это нормально обрабатываетК чему эти хвосты в одной куче? Рассматривайте отдельно каждый из этапов. Что имеете на входе, что получаете на выходе. С хвостами получается несколько этапов передачи данных. И, потенциально, на каждом из них данные могут быть тем или иным образом преобразованы или не тронуты. Потому есть смысл рассматривать чистую передачу данных в php или, как максимум, от клиента -> через вебсервер -> в php. Вполне возможно что после кодирования "неугодных" символов не окажется во входной строке в явном виде, и она не будет преобразована.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [php] Как отключить экранирование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]