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


Автор: drkot 30.8.2009, 02:29
Суть такова:
Скрипт получает RAW данные посредством POST Запроса.
После декодирования выясняется что это multipart/form-data.
Но так как это выяснилось только после преобразования данных PHP не создал никаких глобальных переменных.
Вопрос: как заставить скрипт инициализировать переменные?

PS: формат поступающих данных изменить нельзя.

Скажем интересует parse_str, только чтоб умела разбирать multipart/form-data.

Автор: Dima50 30.8.2009, 10:04
Будь добр поясни что такое 
Цитата(drkot @  30.8.2009,  02:29 Найти цитируемый пост)
RAW данные посредством POST Запроса.


Зувучит как каокето очень эзотеричное понятие протокола хттп. 

Как понять RAW применительно к данным пост запроса? 
Чем тебя не устраевает массив $_POST?

По идее PHP автоматически распарисивает данные из формы в массив $_POST.
 А тип multipart/form-data на сколько известно станарнтый при передачи формы.
 

Цитата(drkot @  30.8.2009,  02:29 Найти цитируемый пост)
Но так как это выяснилось только после преобразования данных PHP не создал никаких глобальных переменных.
Вопрос: как заставить скрипт инициализировать переменные?


Для иницилизации глобальных переменных из POST, GET, Cookie надо включить дерективу register_globals=on в php.ini.




Автор: icewind 30.8.2009, 10:52
Цитата(Dima50 @  30.8.2009,  10:04 Найти цитируемый пост)

Для иницилизации глобальных переменных из POST, GET, Cookie надо включить дерективу register_globals=on в php.ini.

Да ну...


Я полагаю что если тип multipart/form-data, то загружается файл. Если так, то данные о нем будут не в $_POST, а в $_FILES
Чтоб создавалась переменная $HTTP_RAW_POST_DATA нужно в php.ini включить always_populate_raw_post_data. Или можно брать данные прям из потока php://input

Автор: fesor 30.8.2009, 11:02
Dima50, регистер глобалс это есколько другая штука)

Автор: Dima50 30.8.2009, 11:18
icewind,  точное направление говоришь. 
Только вот не всегда файл передается когда multipart/form-data. Зависит от атрибута формы entype.



 


Цитата(fesor @  30.8.2009,  11:02 Найти цитируемый пост)
Dima50, регистер глобалс это есколько другая штука) 


Ага.  Теперь уже ясно.

Добавлено @ 11:22
Цитата(drkot @  30.8.2009,  02:29 Найти цитируемый пост)
Скажем интересует parse_str, только чтоб умела разбирать multipart/form-data


Формат сообщения на русском описан тут:

http://www.intuit.ru/department/internet/html/17/11.html



Автор: Ипатьев 30.8.2009, 13:08
Dima50, а можно пример того, как файл передается с другим атрибутом?

Автор: Dima50 30.8.2009, 15:11
Цитата(Ипатьев @  30.8.2009,  13:08 Найти цитируемый пост)
Dima50, а можно пример того, как файл передается с другим атрибутом? 


я имел ввиду: Не всегда когда стоит multipart/form-data, передается файл. Могут передаваться и текстовые данные с формы.

пример:
Код

<FORM action="http://server.com/cgi/handle"
      enctype="multipart/form-data"
      method="post">
  <P>
  Как Вас зовут? <INPUT type="text" name="submit-name"><BR>
  Какие файлы Вы послали? <INPUT type="file" name="files"><BR>
  <INPUT type="submit" value="Send"> <INPUT type="reset">
</FORM>



Автор: Ипатьев 30.8.2009, 17:14
Не стоит оправдываться. Только еще больше будете запутываться. В прошлый раз было "зависит от enctype". сейчас уже "кроме файла что-то еще". 
Лучше остановиться.

Насколько я понимаю, автору или гуглить, или писать самому. 

Автор: drkot 12.6.2012, 17:20
не знаю что меня с подвигло пройтись по старым темам...
но все же, вот решение того что мне было нужно
Код

parse_str($data)

всем спасибо за участие

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