|
php не может разобрать Соответствие | ☑ | ||
---|---|---|---|---|
0
LuitPauld
26.12.16
✎
12:02
|
Здравствуйте!
Наткнулся на проблему распознавания ассоциативных массивов, отправленных из 1С, в php. Суть: отправляю на скрипт строку, через var_dump выглядит все хорошо, но в echo $_POST['name'] - выводит пустоту. &НаСервере Функция ПередачаДанных() Сервер = "192.168.0.68"; Ресурс = "123.php"; http = Новый HTTPСоединение(Сервер); Данные = Новый Структура; Данные.Вставить("name", "Ivan"); Запись = Новый ЗаписьJSON; Парамерты = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто,"", Истина); Запись.УстановитьСтроку(Парамерты); ЗаписатьJSON(Запись, Данные); Файл = Запись.Закрыть(); Запрос = Новый HTTPЗапрос(Ресурс); Запрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded;charset=utf-8"); Запрос.Заголовки.Вставить("cache-control", "max-age=0"); Запрос.Заголовки.Вставить("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); Запрос.Заголовки.Вставить("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"); Запрос.Заголовки.Вставить("Accept-Encoding", "gzip,deflate,sdch"); Запрос.Заголовки.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"); Запрос.УстановитьТелоИзСтроки("user="+Файл); Ответ = ПолучитьИмяВременногоФайла(); http.ОтправитьДляОбработки(Запрос,Ответ); ФайлОтвета = Новый ТекстовыйДокумент; ФайлОтвета.Прочитать(Ответ, КодировкаТекста.UTF8); Строка = ФайлОтвета.ПолучитьТекст(); КонецФункции Листинг php: <?php if(!empty($_POST)) { echo $_POST['user']; } else { echo "empty"; } ?> Пробовал через Соответствие - такой же результат, в добавок var_dump выводит пустую строку |
|||
1
Юрий Лазаренко
26.12.16
✎
12:11
|
(0) А что в var_dump видно?
|
|||
2
Garykom
гуру
26.12.16
✎
12:19
|
1. Уверен что json в utf8 записан?
2. "&user="+Файл |
|||
3
Юрий Лазаренко
26.12.16
✎
13:17
|
(2) Ну по идее он все равно что-то показать должен, хотя бы кракозябры.
|
|||
4
Garykom
гуру
26.12.16
✎
13:27
|
(3) там разные глюки есть на разных версиях платформы HTTPЗапрос: выловил баг в "УстановитьТелоИзСтроки" и доказал ..
некоторые кста с BOM глючат в УстановитьТелоИзСтроки(<ТелоКакСтрока>, <Кодировка>, <ИспользоватьBOM>) |
|||
5
Рэйв
26.12.16
✎
13:28
|
>> if(!empty($_POST))
Может это не работает7:-) |
|||
6
Fragster
гуру
26.12.16
✎
13:34
|
выкинуть _POST и заюзать php:input
|
|||
7
Fragster
гуру
26.12.16
✎
13:37
|
как-то так:
ini_set("display_errors", 1); $input = file_get_contents('php://input'); $obj = json_decode($input); ну, так проверки на пустоту и прочее. а в 1с убрать заголовки про мультипарт и сделать Запрос.УстановитьТелоИзСтроки(Файл); |
|||
8
Fragster
гуру
26.12.16
✎
13:37
|
да вообще все заголовки убрать
|
|||
9
Рэйв
26.12.16
✎
13:45
|
invoke GetWindowDC,[hWnd]
mov [windowDC],eax invoke CreateCompatibleDC,[windowDC] mov [newDC],eax ; Создать пустой битмап для скриншота invoke CreateCompatibleBitmap,[windowDC],[window_width],[window_height] mov [hBitmap],eax invoke SelectObject,[newDC],[hBitmap] ; Флаг для захвата полупрозрачных окон CAPTUREBLT = 0x40000000 invoke BitBlt,[newDC],0,0,[window_width],[window_height],[windowDC],\ 0,0,SRCCOPY+CAPTUREBLT ..Как то так:-)) |
|||
10
Юрий Лазаренко
26.12.16
✎
13:49
|
(4) Ну разве что BOM, а так при кривой кодировке обычно глюки бывают, если и параметр, и его значение неправильно закодированы. А у ТС параметр "user=" в коде задан, не в файле.
|
|||
11
Fragster
гуру
26.12.16
✎
13:53
|
(10) у автора не BOM, а всякие экранирования служебных символов при POST ("'?& и т.п.) и переносы строк всё портят.
Чтобы не забивать этим себе голову, убрать _POST, как указано в (7) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |