Problem bei Deserialierung der von einem Webservice empfangenen Array-Daten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem bei Deserialierung der von einem Webservice empfangenen Array-Daten

    Hallo,

    beim Versuch, die Daten, die ein Webservice (erfolgreich) zurückliefert, zu deserialiseren, kommt es zur Ausgabe:

    bool(false)
    Hier der Code, bei dem (nur) das Passwort geändert werden musste:

    PHP-Code:
    <?

                    error_reporting ( E_ALL ^ E_NOTICE );
                    ini_set ( 'display_errors' , 1 );

        $soap    = new SoapClient('http://api.ekomi.de/v2/wsdl', array('soap_version' => SOAP_1_2, 'trace' => 1, 'encoding'=>'UTF-8'));
        $data = $soap->getSnapshot('5802|xxxxxxxxxxxxxxxxxxx', 'cust-3.0.0');
        
        echo $data;
        echo "<hr>";

    //    $data2 = print_r ( "'" . $data . "'", false );

    $data2 = "'" . $data . "'";

        $unserialized = unserialize( $data2 );
        
        var_dump ( $unserialized );
        
    ?>
    Die Zeile

    PHP-Code:
    echo $data
    liefert folgenden Output:

    a:4s:4:"info";a:11s:12:"account_name";s:15:"Immoticket24.de";s:17:"ekomi_certificate";s:41:"https://www.ekomi.de/cert/6R65WJE7WW5HT3E";s:20:"ekomi_certificate_id";s:15:"6R65WJE7WW5HT3E";s:21:"ekomi_certificate_seo";s:5 2:"https://www.ekomi.de/bewertungen-immoticket24de.html";s:8:"fb_count";s:3:"414";s:6:"fb_avg";s:3:"4.8";s:13:"fb_avg_detail";s:6:"4.794 7";s:11:"fb_avg_room";d:0;s:14:"fb_avg_service";d:0;s:15:"fb_avg_catering";d:0;s:15:"fb_avg_ambience ";d:0;}s:9:"feedbacks";a:10i:0;a:9s:14:"transaction_id";s:9:"R-001.461";s:6:"rating";s:1:"5";s:11:"rating_room";N;s:14:"rating_service";N;s:15:"rating_catering";N; s:15:"rating_ambience";N;s:7:"message";s:14:"tolles Angebot";s:7:"comment";s:0:"";s:9:"delivered";s:19:"2012-07-18 17:46:50";}i:1;a:9s:14:"transaction_id";s:9:"R-001.494";s:6:"rating";s:1:"5";s:11:"rating_room";N;s:14:"rating_service";N;s:15:"rating_catering";N; s:15:"rating_ambience";N;s:7:"message";s:14:"Alles Bestens!";s:7:"comment";s:0:"";s:9:"delivered";s:19:"2012-07-16 16:54:38";}i:2;a:9s:14:"transaction_id";s:9:"R-001.490";s:6:"rating";s:1:"4";s:11:"rating_room";N;s:14:"rating_service";N;s:15:"rating_catering";N; s:15:"rating_ambience";N;s:7:"message";s:32:"Es ist schnell bearbeitet worden";s:7:"comment";s:0:"";s:9:"delivered";s:19:"2012-07-15 18:35:42";}i:3;a:9s:14:"transaction_id";s:9:"R-001.491";s:6:"rating";s:1:"5";s:11:"rating_room";N;s:14:"rating_service";N;s:15:"rating_catering";N; s:15:"rating_ambience";N;s:7:"message";s:42:"Ich als Laie, muss sagen alles Super !!!";s:7:"comment";s:0:"";s:9:"delivered";s:19:"2012-07-14 11:50:03";}i:4;a:9s:14:"transaction_id";s:9:"R-001.462";s:6:"rating";s:1:"5";s:11:"rating_room";N;s:14:"rating_service";N;s:15:"rating_catering";N; s:15:"rating_ambience";N;s:7:"message";s:132:"Alles bestens, einfache Anwendung, gute Info über die einzelnen Schritte. Veröffentlichungen über verschiedene Quellen sehr zeitnah.";s:7:"comment";s:0:"";s:9:"delivered";s:19:"2012-07-12 16:34:58";}i:5;a:9s:14:"transaction_id";s:9:"R-001.211";s:6:"rating";s:1:"5";s:11:"rating_room";N;s:14:"rating_service";N;s:15:"rating_catering";N; s:15:"rating_ambience";N;s:7:"message";s:108:"sehr gutes Preis- / Leistungsverhältnis bei einem einwandfreien persönlichen Kundenservice. Jederzeit wieder";s:7:"comment";s:0:"";s:9:"delivered";s:19:"2012-07-12 08:56:51";}i:6;a:9s:14:"transaction_id";s:9:"R-001.465";s:6:"rating";s:1:"5";s:11:"rating_room";N;s:14:"rating_service";N;s:15:"rating_catering";N; s:15:"rating_ambience";N;s:7:"message";s:51:"Perfekter persönlicher Service. Besser gehts nicht!";s:7:"comment";s:0:"";s:9:"delivered";s:19:"2012-07-09 18:24:41";}i:7;a:9s:14:"transaction_id";s:9:"R-001.466";s:6:"rating";s:1:"5";s:11:"rating_room";N;s:14:"rating_service";N;s:15:"rating_catering";N; s:15:"rating_ambience";N;s:7:"message";s:134:"Ich wurde umgehend persönlich kontaktiert und meine Buchungswünsche wurden perfekt umgesetzt. Bei dem Preis ein unschlagbares Angebot!";s:7:"comment";s:0:"";s:9:"delivered";s:19:"2012-07-09 18:23:47";}i:8;a:9s:14:"transaction_id";s:9:"R-001.445";s:6:"rating";s:1:"5";s:11:"rating_room";N;s:14:"rating_service";N;s:15:"rating_catering";N; s:15:"rating_ambience";N;s:7:"message";s:135:"Wirklich nicht mehr zu verbessern; weiter so. Habe die Empfehlung von meinem Schwiegervater bekommen (BJ 44). Kann es kaum glauben. ;-)";s:7:"comment";s:0:"";s:9:"delivered";s:19:"2012-07-06 08:57:33";}i:9;a:9s:14:"transaction_id";s:9:"R-001.442";s:6:"rating";s:1:"5";s:11:"rating_room";N;s:14:"rating_service";N;s:15:"rating_catering";N; s:15:"rating_ambience";N;s:7:"message";s:57:"Tolle Idee, toller Kundenservice, absolut empfehlenswert!";s:7:"comment";s:0:"";s:9:"delivered";s:19:"2012-07-05 09:54:21";}}s:4:"done";i:1;s:7:"done_at";i:1343071297;}



    Das Seltsame ist, dass es klappt, wenn man diesen Output deserialisert, indem man den String in unserialize ( ... ) einsetzt!



    Zusammengefasst:

    * Die zurückgelieferten Daten direkt (hart kodiert) in unserialize( ... ) eingesetzt liefert ein gültiges Array.

    * Die Daten als Variable $data in unserialize( ... ) eingesetzt liefert:

    bool(false)
    Hat jemand eine Idee, wie es zu diesem Unterschied kommen kann?


    Gruß Programmier-Tier

  • #2
    Dass ein Soap Service serialisierte Daten ausliefert ist arg verwunderlich(wenn nicht gar total unsinnig).


    Grundsätzlich:
    Wenn unserialise() auf dem einen String arbeitet, und auf dem anderen nicht, dann unterscheiden sich die Strings.
    Wir werden alle sterben

    Kommentar


    • #3
      unserialize() auf Daten aufzurufen, die von einem externen Server oder Client kommen ist hoch riskant und aus Sicherheitsgründen absolut abzulehnen. Wer hat sich so ein bescheuertes Webservice ausgedacht? Gibts dazu keine Alternative?

      Kommentar


      • #4
        Zitat von h3ll Beitrag anzeigen
        unserialize() auf Daten aufzurufen, die von einem externen Server oder Client kommen ist hoch riskant und aus Sicherheitsgründen absolut abzulehnen.
        [OFFTOPIC]Welche Lücke würde sich hier auftun?[/OFFTOPIC]
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          1. Zwischen 64Bit und 32Bit gibts Probleme Dank der unterschiedlichen Integergrößen
          2. Damals: Google(php unserialize buffer overflow)
          Wir werden alle sterben

          Kommentar


          • #6
            @combie
            Danke!
            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
            Schön - etwas Geschichte kann ja nicht schaden.
            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

            Kommentar


            • #7
              Zitat von Quetschi Beitrag anzeigen
              [OFFTOPIC]Welche Lücke würde sich hier auftun?[/OFFTOPIC]
              Man könnte fremden Code einschleusen. Ist auch schon mehrmals in der Praxis geschehen.

              Kommentar

              Lädt...
              X