fsockopen und arrays

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

  • fsockopen und arrays

    Hallo,

    wir kann ich denn, oder geht das überhaupt, Arrays mit fsockopen übertragen. Habe das bereits mit serialize($data); und unserialize($_POST); probiert aber es kommt da nix an... das array ist leer. Geht das überhaupt mit fsockopen?
    » http://www.htaccess-generator.com

  • #2
    sender.php
    PHP-Code:
    <?php echo serialize(array('foo' => 'bar')); ?>
    receiver.php
    PHP-Code:
    <?php
    if ($fp fsockopen('localhost'80)) {
        
    fputs($fp"GET /path/to/sender.php HTTP/1.0\r\n\r\n");
        
    $buffer '';
        while (!
    feof($fp)) $buffer .= fgets($fp128);
        
    fclose($fp);
        
    $a unserialize($buffer);
    }
    ?>
    Natürlich könnte receiver.php auch einfach so aussehen:
    PHP-Code:
    <?php
    $a 
    unserialize(
            
    file_get_contents('http://localhost/path/to/sender.php')
         ); 
    ?>

    Kommentar


    • #3
      sorry, habe ich vergessen zu erwähnen... es muss genau umgekehrt erfolgen... mit fsockopen und der funktion PostToHost (siehe hier: http://forum.de.selfhtml.org/archiv/2004/12/t96441/) sende ich die Daten zu dem Server 2 der diese dann wieder verarbeiten muss. Hier kommt nichts an. Mit deinem Script würde ich ja die Variablen vom Server 1 auslesen. Die Daten werden aber an den Server 2 gesendet.
      » http://www.htaccess-generator.com

      Kommentar


      • #4
        Was ergibt var_dump( $_POST ); auf dem 2ten Server?? (Die Ausgabe in eine Datei schreiben!)

        Kommentar


        • #5
          Was ausgegeben wird, habe ich in eine .txt Datei schreiben lassen und angehängt. Wenn ich jetzt jedoch unserialize auf POST anwende bekomme ich folgende Meldung:

          PHP-Code:
          Warningunserialize() expects parameter 1 to be string, array given in... 
          Na ja, damit kann ich nicht wirklich was anfangen... meine Variable die den Inhalbt aus unserialize beinhalten soll ist auf jedenfall leer.

          Warum funktioniert unserialize hier nicht?

          PHP-Code:
          $data unserialize($_POST); // Server 2 
          » http://www.htaccess-generator.com

          Kommentar


          • #6
            Meine Datei habe ich vergessen...
            Angehängte Dateien
            » http://www.htaccess-generator.com

            Kommentar


            • #7
              ich bin nun nochmal ein schritt weiter...

              PHP-Code:
              $data unserialize(stripslashes($_POST)); 
              stripslashes() entfernt die escape-zeichen. somit kommt keine fehlermeldung mehr, aber $data ist immer noch leer...
              » http://www.htaccess-generator.com

              Kommentar


              • #8
                $_POST ist natürlich ein Array ... du musst schon auf ein konkretes Feld zugreifen.
                Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                Kommentar


                • #9
                  Wie schreibst du die Daten denn rüber?? PHP legt nämlich den Schlüssel s:42:\"betreiber an und den Rest der Daten als Wert zu diesem Schlüssel. Du musst das schon in der Form
                  Code:
                  data=SERIALIZED_VALUE
                  an deinen 2ten Server schicken!

                  Kommentar


                  • #10
                    ich bin wirklich am verzweifeln, mit meinem wert hat wirklich was nicht gestimmt. jetzt ist es aber richtig, allerdings kommt einfach nix auf server 2 an. ich bin total am ende, weiß nicht mehr woran es liegt, deshalb habe ich euch anbei mal die drei scripte angehängt, mit der bitte das dies mal jemand in augenschein nimmt. ich bin wirklich mit meinem latein am ende...

                    in script drei habe ich mit print_r($_POST); alle empfangen daten versucht auszugeben. aber es kommt nix an, warum? keine ahnung...

                    mit der hoffnung auf hilfe... vielen dank!
                    Angehängte Dateien
                    » http://www.htaccess-generator.com

                    Kommentar


                    • #11
                      Ich habe da in meiner Wühlkiste noch sowas. Allerdings muß ich von der Verwendung abraten, es sei den, du verschlüsselst (z.B. SSL) die seriellen Daten. Es gibt oder gab Sicherheitslücken in unserialize!!!

                      Alternativ könntest du die wddx oder json Funktionen zum serialisieren benutzen. Oder noch besser: SOAP

                      Jetzt zum Code:
                      Werf die beiden Dateien zum testen erstmal in einen beliebigen Order.

                      Zum Beweis, dass es auch funktioniert, wird ucfirst() auf alle Arrayelemente angewendet.

                      Um andere Server anzusprechen ändere in client.php die $server Variable.

                      PHP-Code:
                       <?php
                      // Dises ist die client.php
                      error_reporting(E_ALL);
                      ini_set('display_errors'TRUE);
                       
                      $server  'http://';
                      $server .=  $_SERVER["HTTP_HOST"];
                      $server .=  dirname($_SERVER["SCRIPT_NAME"]);
                      $server .= '/server.php';

                      $testarray[] = 'bli';
                      $testarray[] = 'bla';
                      $testarray[] = 'blub';

                      $post_data 'test='.serialize($testarray);

                      $ch curl_init();
                      curl_setopt($chCURLOPT_URL$server);
                      curl_setopt($chCURLOPT_POST);
                      curl_setopt($chCURLOPT_POSTFIELDS$post_data);
                      curl_setopt($chCURLOPT_RETURNTRANSFER1);
                      $postResult curl_exec($ch);
                      if (
                      curl_errno($ch)) print curl_error($ch);
                      curl_close($ch);

                      var_export(unserialize($postResult));
                      phpinfo();
                      ?>
                      PHP-Code:
                       <?php
                      // Dises ist die server.php
                      error_reporting(E_ALL);
                      ini_set('display_errors'TRUE);

                      if(empty(
                      $_POST['test']))
                        die(
                      'Sorry, bitte nicht direkt aufrufen');

                      $test $_POST['test'];

                      if(
                      function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc())
                        
                      $test stripslashes($test);

                      $testarray array_map('ucfirst',unserialize($test));
                      print 
                      serialize($testarray);
                      ?>
                      Wir werden alle sterben

                      Kommentar


                      • #12
                        PHP-Code:
                        $var2 serialize($_POST);
                        print_r($var2);

                        $request PostToHost($var2"eintragen.php""""");

                        // ...
                        print_r($_POST);
                        $data unserialize(stripslashes($_POST));
                        print_r($data); 
                        Was bekommst du da jeweils für ausgaben?
                        Musst du $var2 nicht in der Form "value=".serialize($_POST); aufbauen und in der Empfangsdatei nur $_POST['value'] entserialisieren??

                        Kommentar


                        • #13
                          jaaaaaaa, da funzt jetzt endlich... @PHP-Desaster... DANKE!

                          Mmh, nun habe ich noch Probleme mit urlencode und -decode... einige geben in die Felder "A & B" ein oder ähnliches. Aus diesem Grund wollte ich den kompletten String kodieren und auf der andern Seite wieder dekodieren... geht aber nicht, es kommt mal wieder nix an...

                          PHP-Code:
                          $var2 'q='.serialize($_POST);
                          $var2 urlencode($var2);

                          // auf server2
                          $var urldecode($_POST['q']);
                          $data unserialize($var); 
                          » http://www.htaccess-generator.com

                          Kommentar


                          • #14
                            geht aber nicht, es kommt mal wieder nix an...
                            Jetzt aber erstmal ein paar Testausgaben posten und erklären, was denn nicht klappt!!

                            Kommentar

                            Lädt...
                            X