обработки XML сообщения полученного по POST

Discussion in 'PHP' started by burcev, 18 Feb 2009.

  1. burcev

    burcev New Member

    Joined:
    30 Jun 2008
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    Сразу к делу.
    Мне необходимо обработать xml - сообщение, само сообщение передают постом. Кто отправляет я не знаю.
    Просто POST- ом передали мне в скрипт хмл, - я его должет обработать .

    Как узнать что пришло сообщение в скрипте, как xml засунуть в переменную для парсинга и т.д.
    Вообще не имею представление как сделать.

    Помогите кто чем может.

    З.Ы.: заранее благодарен
     
  2. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Узнать что пришло сообщение в скрипте...проверить $_POST.
    тупо if(!empty($_POST))

    А вот по поводу парсинга могу лишь дать ссылки на ф-ции для работы с xml и json (для php), потому что не ясно как тебе нужно обрабатывать полученный код.

    http://www.php.su/functions/?cat=xml
    http://ru.php.net/manual/ru/ref.json.php
     
  3. burcev

    burcev New Member

    Joined:
    30 Jun 2008
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    Спс. сча инфу буду смотреть.
     
  4. burcev

    burcev New Member

    Joined:
    30 Jun 2008
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    Допустим я передаю данные скрипту вот так:
    PHP:
    function callServer() {
    var 
    obj document.getElementById('clock');

    var 
    req;


      
    // Get the city and state from the Web form
      
    var firstName "ffff";
      var 
    lastName "aaaaa";
      var 
    street "ggggg";
      var 
    city "33333l";
      var 
    state "ZP";
      var 
    zipCode "565677";

      var 
    xmlString "<profile>" +
        
    "  <firstName>" escape(firstName) + "</firstName>" +
        
    "  <lastName>" escape(lastName) + "</lastName>" +
        
    "  <street>" escape(street) + "</street>" +
        
    "  <city>" escape(city) + "</city>" +
        
    "  <state>" escape(state) + "</state>" +
        
    "  <zip-code>" escape(zipCode) + "</zip-code>" +
        
    "</profile>";

      
    // Построим URL для соединения
      
    var url "saveAddress.php";


      
    if (
    window.XMLHttpRequest)    req = new XMLHttpRequest();
    else if(
    window.ActiveXObject)
    {
        try {
            
    req = new ActiveXObject('Msxml2.XMLHTTP');  
        } catch (
    e){}                                    
        try {                                            
            
    req = new ActiveXObject('Microsoft.XMLHTTP');
        } catch (
    e){}
    }

    if (
    req
    {
        
    req.onreadystatechange = function() 
        {
            if (
    req.readyState == && req.status == 200)  
            { 
    obj.innerHTML req.responseXML; }        
        };  

      
    // Откроем соединение с сервером
      
    req.open("POST"urltrue);

      
    // Сообщим серверу, что вы посылаете данные в формате XML
      
    req.setRequestHeader("Content-Type""text/xml");

      
    // Установим функцию запуска сервера, когда это выполнено
      //req.onreadystatechange = confirmUpdate;

      // Отправим заказ
      
    req.send(xmlString);
      

    else 
    alert("Браузер не поддерживает AJAX");
    }
    как мне в saveAddress.php обработать хил который я передаю? И вообще как определить что я его передал?
     
  5. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Собственно:
    PHP:
    req.send('field=' xmlString);
    а в самом скрипте получаешь:
    PHP:
    <?php

    if(!empty($_POST['field'])){
        
        
    //Парсишь

    }

    ?>
    а дальше парсишь....опять же не знаю что тебе конкретно нужно парсить....вывести как html или ещё что-то
     
  6. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Енот нафига?

    Тс, шли данные напрямую

    req.send(xmlString);

    А в скрипте:
    $xmlData = isset($_POST)?(implode('', $_POST)):(array());
     
    #6 Chaak, 19 Feb 2009
    Last edited: 20 Feb 2009
  7. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    не, так не интересно
     
  8. burcev

    burcev New Member

    Joined:
    30 Jun 2008
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    мне действительно нужно напрямую передавать, без ключей . Это не я передаю (мне в скрипт некий сервер бросаем хмл, я его должен отпарсить(бла-бла-бла) и ответить ему тоже хмл-сообщение)
     
  9. burcev

    burcev New Member

    Joined:
    30 Jun 2008
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    тот скрипт я как пример написал. чтобы был понятно чё мне надо :)
     
  10. burcev

    burcev New Member

    Joined:
    30 Jun 2008
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    Как поймать XML пакет переданный POST- ом

    что-то таким методом
    PHP:
    $xmlData = isset($_POST)implode(''$_POST))array());
    не получается поймать XML пакет :( .

    Может для этого какой-то сниффер нужен, который будет ловить XML пакеты. А отдельный скрипт будет собирать эти пакеты? или есть другое решение(более простое)?

    Помогите, кто чем может.
     
  11. burcev

    burcev New Member

    Joined:
    30 Jun 2008
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    хе-хе. нашел решение.
    PHP:
    $xmlDATA $GLOBALS["HTTP_RAW_POST_DATA"];
    вот и всё. :)
     
  12. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Только в php6 его не будет, пишите свои бажные скрипты, потом засоряйте форум тупыми вопросами почему не работает.

    P.S обновил свой пост, скрипт не работал из-за смайлов :) обнови.
     
    #12 Chaak, 20 Feb 2009
    Last edited: 20 Feb 2009
  13. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Это ты с разрабами уже договорился? Глобалсов может и не будет в шестёрке, а предопределённая переменая $HTTP_RAW_POST_DATA будет всегда, ну если, конечно, always_populate_raw_post_data в php.ini включен.