За последние 24 часа нас посетил 26641 программист и 1511 роботов. Сейчас ищут 940 программистов ...

коварный POST-запрос

Тема в разделе "Прочие вопросы по PHP", создана пользователем semnt, 25 дек 2013.

  1. semnt

    semnt Новичок

    С нами с:
    25 дек 2013
    Сообщения:
    93
    Симпатии:
    0
    Приветы.
    Столкнулся с такой проблемой – не могу разобрать "неформатированный" POST-запрос в PHP.
    Я привык работать с POST-запросами в которых есть пары ключ=значение:
    Код (Text):
    1.  
    2. POST /action.php HTTP/1.1
    3. Host: host.ru
    4.  
    5. _key1_=_val1_;_key2_=_val2_;
    Такой запрос транслируется PHP в переменную $_POST как в ассоциативный массив:
    Код (Text):
    1.  
    2. array(2) {
    3.   ["_key1_"]=>
    4.   string(6) "_val1_"
    5.   ["_key2_"]=>
    6.   string(6) "_val2_"
    7. }
    Всё верно. Но у меня задача разобрать вот такой POST-запрос:
    Код (Text):
    1.  
    2. POST /action.php HTTP/1.1
    3. Host: host.ru
    4.  
    5. <-BEGIN=
    6. <-ACC=
    7. <login=abc> <password=qwerty>
    8. /-ACC>
    9. /-END>
    Как видно передающая сторона генерит данные в своём формате и мне нужно собрать парсер этой информации, но как мне получить доступ к этому POST'у как к простой строке? При таком запросе в переменную $_POST транслируется совсем не то что нужно:
    Код (Text):
    1.  
    2. array(1) {
    3.   ["<-BEGIN"]=>
    4.   string(55) "
    5. <-ACC=
    6. <login=abc> <password=qwerty>
    7. /-ACC>
    8. /-END>"
    9. }
    Т.е. <-BEGIN= рассмативается как ключ...

    Резюмирую:
    Как мне получить доступ к POST-data напрямую в обход парсера "ключ=значение"?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Пхп для этого не предназначен

    Добавлено спустя 1 минуту 34 секунды:
    Ну кстати есть сырой ввод. Как же его

    Добавлено спустя 1 минуту 9 секунд:
    http://php.ru/manual/wrappers.html.php
    пробуйте
     
  3. semnt

    semnt Новичок

    С нами с:
    25 дек 2013
    Сообщения:
    93
    Симпатии:
    0
    igordata, спасибо за совет.
    Получилось вот так:
    Код (Text):
    1.  
    2. $rawPost = file_get_contents( "php://input" );
    3. var_dump( $rawPost );
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Лучше б они не изобретали велосипедов. Тогда б и вам не пришлось.