fsockopen und arrays

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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')
         ); 
    ?>

    Comment


    • #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

      Comment


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

        Comment


        • #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

          Comment


          • #6
            Meine Datei habe ich vergessen...
            Attached Files
            » http://www.htaccess-generator.com

            Comment


            • #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

              Comment


              • #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]

                Comment


                • #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!

                  Comment


                  • #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!
                    Attached Files
                    » http://www.htaccess-generator.com

                    Comment


                    • #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

                      Comment


                      • #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??

                        Comment


                        • #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

                          Comment


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

                            Comment

                            Working...
                            X