[PHP] Получение содержимого POST запроса
От: Young yunoshev.ru
Дата: 21.08.09 11:24
Оценка:
Есть сервис с которым нужно наладить взаимодейсвие. К документации к нему сказанно — "В начале соединения сервису клиента в POST запросе передаётся XML-документ".

Сервис клиента это мой скрипт.
Как мне получить этот самый XML документ-то?

Пробовал найденый пример $request_xml = file_get_contents("php://input");, но возвращает пустое значение.

Как будет правильно получить содержимое POST запроса целиком?
Re: [PHP] Получение содержимого POST запроса
От: Аноним  
Дата: 21.08.09 13:10
Оценка:
Здравствуйте, Young, Вы писали:


Y>Есть сервис с которым нужно наладить взаимодейсвие. К документации к нему сказанно — "В начале соединения сервису клиента в POST запросе передаётся XML-документ".


Y>Сервис клиента это мой скрипт.

Y>Как мне получить этот самый XML документ-то?

Y>Пробовал найденый пример $request_xml = file_get_contents("php://input");, но возвращает пустое значение.


Y>Как будет правильно получить содержимое POST запроса целиком?


Смотря какой запрос шлете...
Re[2]: [PHP] Получение содержимого POST запроса
От: Young yunoshev.ru
Дата: 21.08.09 13:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Young, Вы писали:



Y>>Есть сервис с которым нужно наладить взаимодейсвие. К документации к нему сказанно — "В начале соединения сервису клиента в POST запросе передаётся XML-документ".


Y>>Сервис клиента это мой скрипт.

Y>>Как мне получить этот самый XML документ-то?

Y>>Пробовал найденый пример $request_xml = file_get_contents("php://input");, но возвращает пустое значение.


Y>>Как будет правильно получить содержимое POST запроса целиком?


А>Смотря какой запрос шлете...


Запрос шлю не я. Какой и как шлют пока спросить возможности нет.
Какие могут быть варианты?
Как определить какой мне шлют запрос?
Re[3]: [PHP] Получение содержимого POST запроса
От: piksel Россия  
Дата: 21.08.09 13:30
Оценка:
Лично я не понял суть вопроса. Кто и куда шлет запросы? Инфа у кого-то на сервере и ваш скрипт её запрашивает. Или информация у вас на сервере и у вас её запрашивают. И в том и в другом случае сначала отсылается запрос, типа протокол://урл, и на него сервер уже отвечает. Если нет запроса, то и отвечать некуда. Для проверки информации, которая приходит можно поставить программу fiddler2, например, и внимательно просмотреть все отсылаемые и присылаемые заголовки, если запрос исходит от вас.

Y>Запрос шлю не я. Какой и как шлют пока спросить возможности нет.

Y>Как определить какой мне шлют запрос?
Посмотрите логи своего сервера, если запросы шлют вам.

Y>Какие могут быть варианты?

Вариантов может быть масса, все не описать. Зависит от протокола запроса, например, от вида запрашиваемого ресурса и параметров.
Re[4]: [PHP] Получение содержимого POST запроса
От: Young yunoshev.ru
Дата: 21.08.09 13:37
Оценка:
Здравствуйте, piksel, Вы писали:

Есть некий сервис который должен вызывать мой скрипт, про то как он вызывает есть только строчка из документации "В начале соединения сервису клиента в POST запросе передаётся XML-документ" и далее текст самого документа.

Грубо — у меня есть php скрипт, я знаю что его вызывают и POST запросом туда передают данные. Как мне эти данные получить?

Возможности посмотреть логи сервера нет, уточнить что люди подразумевают под передачей POST запроса нет.

Какие варианты можно попробовать?
Re: [PHP] Получение содержимого POST запроса
От: Аноним  
Дата: 21.08.09 13:47
Оценка: 6 (1)
Здравствуйте, Young, Вы писали:


Y>Есть сервис с которым нужно наладить взаимодейсвие. К документации к нему сказанно — "В начале соединения сервису клиента в POST запросе передаётся XML-документ".


Y>Сервис клиента это мой скрипт.

Y>Как мне получить этот самый XML документ-то?

Y>Пробовал найденый пример $request_xml = file_get_contents("php://input");, но возвращает пустое значение.


Y>Как будет правильно получить содержимое POST запроса целиком?

— самое простое, var_dump($_POST);
— посмотреть содержимое $HTTP_RAW_POST_DATA, проверить включено ли always_populate_raw_post_data в php.ini
— запустить phpinfo() , посмотреть какие параметры там
Re[5]: [PHP] Получение содержимого POST запроса
От: piksel Россия  
Дата: 21.08.09 13:49
Оценка: 3 (1)
Здравствуйте, Young, Вы писали:

Y>Есть некий сервис который должен вызывать мой скрипт, про то как он вызывает есть только строчка из документации "В начале соединения сервису клиента в POST запросе передаётся XML-документ" и далее текст самого документа.

Т.е. я так понимаю, что всё-же запрашивают ваш скрипт извне ("вызывать мой скрипт")
Y>Грубо — у меня есть php скрипт, я знаю что его вызывают и POST запросом туда передают данные. Как мне эти данные получить?
Более того, видимо, ему передают POSTом данные ("POST запросом туда передают данные")
Y>Возможности посмотреть логи сервера нет, уточнить что люди подразумевают под передачей POST запроса нет.
Y>Какие варианты можно попробовать?

Если я понял все действительно правильно, то вставте, например в свой php-скрипт ближе к началу что-нить типа:

$buff = '';
foreach ($_POST as $key => $val) {
    $buff .= "$key: $val";
}
file_put_contents("filename", $buff);

И в той же папке, что и ваш скрипт, в файле filename будет храниться то, что приходит от пользователей. Естественно, пользователь должен запросить этот скрипт, функция file_put_contents должна присутствовать в сборке, а для папки должно быть достаточно прав на запись.
Re[6]: [PHP] Получение содержимого POST запроса
От: Аноним  
Дата: 21.08.09 21:04
Оценка:
Здравствуйте, piksel, Вы писали:

P>Здравствуйте, Young, Вы писали:


Y>>Есть некий сервис который должен вызывать мой скрипт, про то как он вызывает есть только строчка из документации "В начале соединения сервису клиента в POST запросе передаётся XML-документ" и далее текст самого документа.

P>Т.е. я так понимаю, что всё-же запрашивают ваш скрипт извне ("вызывать мой скрипт")
Y>>Грубо — у меня есть php скрипт, я знаю что его вызывают и POST запросом туда передают данные. Как мне эти данные получить?
P>Более того, видимо, ему передают POSTом данные ("POST запросом туда передают данные")
Y>>Возможности посмотреть логи сервера нет, уточнить что люди подразумевают под передачей POST запроса нет.
Y>>Какие варианты можно попробовать?

P>Если я понял все действительно правильно, то вставте, например в свой php-скрипт ближе к началу что-нить типа:


P>
P>$buff = '';
P>foreach ($_POST as $key => $val) {
P>    $buff .= "$key: $val";
P>}
P>file_put_contents("filename", $buff);
P>

P>И в той же папке, что и ваш скрипт, в файле filename будет храниться то, что приходит от пользователей. Естественно, пользователь должен запросить этот скрипт, функция file_put_contents должна присутствовать в сборке, а для папки должно быть достаточно прав на запись.

как всё сложно
file_put_contents("filename", print_r($_POST, true));
Re[7]: [PHP] Получение содержимого POST запроса
От: piksel Россия  
Дата: 22.08.09 03:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>file_put_contents("filename", print_r($_POST, true));


Действительно, 2-й параметр print_r как-то упустил из виду
Я эту функцию сам переписал в своё время для достижения эффекта с использованием 2-го параметра true. Гадство! Проклятая невнимательность!
Re[8]: [PHP] Получение содержимого POST запроса
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 22.08.09 06:11
Оценка:
Здравствуйте, piksel, Вы писали:

P>Действительно, 2-й параметр print_r как-то упустил из виду

P>Я эту функцию сам переписал в своё время для достижения эффекта с использованием 2-го параметра true. Гадство! Проклятая невнимательность!

Велосипедостроение очень характерно для ПХПшников. Сам так делал, когда писал на нём. Можешь быть дело в клиентах с их вечными "вчера", может в языке, может в подходе — но факт остаётся фактом — после перехода на .NET желание делать велосипеды куда-то улетучилось...
[КУ] оккупировала армия.
Re[9]: [PHP] Получение содержимого POST запроса
От: piksel Россия  
Дата: 22.08.09 08:07
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Велосипедостроение очень характерно для ПХПшников.


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

K>Сам так делал, когда писал на нём.


Через период обучения (а велосипедостроение — это и есть обучение, если оно не рецидивно) прошло большинство. Это скорее закономерность.

K>Можешь быть дело в клиентах с их вечными "вчера", может в языке, может в подходе — но факт остаётся фактом — после перехода на .NET желание делать велосипеды куда-то улетучилось...


Желание делать велосипеды пропадает всегда, когда знаешь (или помнишь) про более быстрые и отработанные методики. Никак не хотел бы вас задеть, но почему-то не очень приятно, когда вслепую идет какое-либо отождествление.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.