känguru: POST funktioniert auf einmal nicht mehr

Hallo zusammen,
ich baue gerade an einem Formular. Die Daten werden per POST übertragen, bisher ohne Probleme. Doch auf einmal ist das POST-Array immer leer. Ändere ich auf die GET-methode werden die Daten wunderbar übermittelt. Und ich habe nichts an dem Script geändert, es passiert von jetzt auf gleich...

Jemannd eine Idee was das sein kann? Bin gerade relativ ratlos

Danke für Eure Mühen
Känguru

  1. Tach!

    ich baue gerade an einem Formular. Die Daten werden per POST übertragen, bisher ohne Probleme. Doch auf einmal ist das POST-Array immer leer.

    Ist es ein generelles Problem? Tritt es mit einem ganz neu erstellten Minimal-Formular ebenfalls auf?

    dedlfix.

    1. Hmm, auf die Idee bin ich mal wieder nicht gekommen... Nein, dort tritt es nicht auf...
      Hier mal der Quelltext, aus dem browser kopirt, da der PHP-Teil hier wohl nicht relevant ist.

        
      <table><form action="bet.php" method="post"><thead><tr><th>Datum</th><th>Uhrzeit</th><th colspan="2">Heim</th><th colspan="2">Gast</th><th>Heim</th><th>Gast</th></tr></thead><tbody><tr>  
      <td>09.07.13</td>  
      <td>20:30</td>  
      <td class="text_center"><img src="clubs/20/fcb.png"  alt="FCB"/></td>  
      <td>FC Bayern München</td>  
      <td class="text_center"><img src="clubs/20/bmg.png"  alt="BMG"/></td>  
      <td> Borussia Mönchengladbach</td>  
      <td><input type="number" id="goal_home_1" name="goal_home[1]" class="goal" value="1"/></td>  
        
      <td><input type="number" id="goal_guest_1" name="goal_guest[1]" class="goal" value="1"/>  
      <input type="hidden" name="match[1]" value="1"></td>  
      </tr>  
        
      <tr>  
      <td>10.07.13</td>  
      <td>15:30</td>  
      <td class="text_center"><img src="clubs/20/b04.png"  alt="B04"/></td>  
      <td>Bayer 04 Leverkusen</td>  
      <td class="text_center"><img src="clubs/20/scf.png"  alt="SCF"/></td>  
      <td> Sport-Club Freiburg</td>  
      <td><input type="number" id="goal_home_2" name="goal_home[2]" class="goal" value="2"/></td>  
        
      <td><input type="number" id="goal_guest_2" name="goal_guest[2]" class="goal" value="2"/>  
      <input type="hidden" name="match[2]" value="2"></td>  
      </tr>  
        
      <tr>  
      <td>10.07.13</td>  
      <td>15:30</td>  
      <td class="text_center"><img src="clubs/20/h96.png"  alt="H96"/></td>  
      <td>Hannover 96</td>  
      <td class="text_center"><img src="clubs/20/wob.png"  alt="WOB"/></td>  
      <td> Vfl Wolfsburg</td>  
      <td><input type="number" id="goal_home_3" name="goal_home[3]" class="goal" value=""/></td>  
        
      <td><input type="number" id="goal_guest_3" name="goal_guest[3]" class="goal" value=""/>  
      <input type="hidden" name="match[3]" value="3"></td>  
      </tr>  
        
      <tr>  
      <td>10.08.13</td>  
      <td>15:30</td>  
      <td class="text_center"><img src="clubs/20/hof.png"  alt="HOF"/></td>  
      <td>1899 Hoffenheim</td>  
      <td class="text_center"><img src="clubs/20/fcn.png"  alt="FCN"/></td>  
      <td> 1. FC Nürnberg </td>  
      <td><input type="number" id="goal_home_4" name="goal_home[4]" class="goal" value=""/></td>  
        
      <td><input type="number" id="goal_guest_4" name="goal_guest[4]" class="goal" value=""/>  
      <input type="hidden" name="match[4]" value="4"></td>  
      </tr>  
        
      <tr>  
      <td>10.08.13</td>  
      <td>15:30</td>  
      <td class="text_center"><img src="clubs/20/fca.png"  alt="FCA"/></td>  
      <td>FC Augsburg</td>  
      <td class="text_center"><img src="clubs/20/bvb.png"  alt="BVB"/></td>  
      <td> Borussia Dortmund</td>  
      <td><input type="number" id="goal_home_5" name="goal_home[5]" class="goal" value="8"/></td>  
        
      <td><input type="number" id="goal_guest_5" name="goal_guest[5]" class="goal" value="8"/>  
      <input type="hidden" name="match[5]" value="5"></td>  
      </tr>  
        
      <tr>  
      <td>10.08.13</td>  
      <td>15:30</td>  
      <td class="text_center"><img src="clubs/20/bsc.png"  alt="BSC"/></td>  
      <td>Hertha BSC</td>  
      <td class="text_center"><img src="clubs/20/ffm.png"  alt="FFM"/></td>  
      <td> Eintracht Frankfurt</td>  
      <td><input type="number" id="goal_home_6" name="goal_home[6]" class="goal" value=""/></td>  
        
      <td><input type="number" id="goal_guest_6" name="goal_guest[6]" class="goal" value=""/>  
      <input type="hidden" name="match[6]" value="6"></td>  
      </tr>  
        
      <tr>  
      <td>10.08.13</td>  
      <td>18:30</td>  
      <td class="text_center"><img src="clubs/20/ebs.png"  alt="EBS"/></td>  
      <td>Eintracht Braunschweig</td>  
      <td class="text_center"><img src="clubs/20/bre.png"  alt="BRE"/></td>  
      <td> SV Werder Bremen</td>  
      <td><input type="number" id="goal_home_7" name="goal_home[7]" class="goal" value=""/></td>  
        
      <td><input type="number" id="goal_guest_7" name="goal_guest[7]" class="goal" value=""/>  
      <input type="hidden" name="match[7]" value="7"></td>  
      </tr>  
        
      <tr>  
      <td>11.08.13</td>  
      <td>15:30</td>  
      <td class="text_center"><img src="clubs/20/m05.png"  alt="M05"/></td>  
      <td>1. FSV Mainz 05</td>  
      <td class="text_center"><img src="clubs/20/vfb.png"  alt="VFB"/></td>  
      <td> Vfb Stuttgart</td>  
      <td><input type="number" id="goal_home_8" name="goal_home[8]" class="goal" value=""/></td>  
        
      <td><input type="number" id="goal_guest_8" name="goal_guest[8]" class="goal" value=""/>  
      <input type="hidden" name="match[8]" value="8"></td>  
      </tr>  
        
      <tr>  
      <td>11.08.13</td>  
      <td>18:30</td>  
      <td class="text_center"><img src="clubs/20/s04.png"  alt="S04"/></td>  
      <td>FC Schalke 04</td>  
      <td class="text_center"><img src="clubs/20/hsv.png"  alt="HSV"/></td>  
      <td> Hamburger SV</td>  
      <td><input type="number" id="goal_home_9" name="goal_home[9]" class="goal" value=""/></td>  
        
      <td><input type="number" id="goal_guest_9" name="goal_guest[9]" class="goal" value=""/>  
      <input type="hidden" name="match[9]" value="9"></td>  
      </tr>  
        
      <tr><td></td><td></td><td></td><td></td><td></td><td></td><td colspan="2"><input type="image" src="layout/btn_bet_small.png" class="submit"/></td></tr></tbody></form></table>
      

      Und zum ausgeben dies hier:

      echo '<pre>';  
      var_dump($_POST);  
      var_dump($_GET);  
      echo '</pre>';
      
      1. Tach!

        Hier mal der Quelltext, aus dem browser kopirt, da der PHP-Teil hier wohl nicht relevant ist.

        Für mich ist das Problem mit FF, IE10, Chrome, Opera nicht nachvollziehbar.

        <table><form action="bet.php" method="post"><thead>

        Ich kann dir nur sagen, dass form kein erlaubtes Kind von table ist. Entweder gehört das form um table oder in eine Zelle. Aber diesen Fehler übersehen die Browser großzügig. Vielleicht hast du ja noch mehr Fehler im Rest. Lass mal den Validator drüberlaufen. Oder wirf mal alles raus, was nicht unbedingt notwendig ist. Ist der Fehler dann weg, lag es daran. Füge schrittweise den Rest wieder hinzu, bis der Fehler wieder da ist. Dann hast du ihn eingekreist. Weiterhin ist es auch sinnvoll, mal den HTTP-Verkehr zwischen Browser und Server anzusehen, nicht dass du da eine unbemerkte Umleitung oder ähnliches drin hast.

        dedlfix.

        1. So, ich habe nun alles ausprobiert und es liegt am empfangenden PHP-Script. Allerdings verstehe ich nicht warum es sich so verhält.

          Ich übergeb ja die Daten per Post, so lange ich sie im anderen Script nicht anspreche (egal ob if-Abfrage oder in andere Variable schreiben), sind sie vorhanden.

          Als Besipiel:

            
          <?php  
            
          //include 'connect.php';  
          echo '<pre>';  
          print_r($_POST);  
          print_r($_GET);  
          echo '</pre>';  
          ?>  
          
          

          funktioniert und gibt folgendes aus ~~~html

          Array
          (
              [goal_home] => Array
                  (
                      [1] => 1
                      [2] => 2
                      [3] =>
                      [4] =>
                      [5] => 8
                      [6] =>
                      [7] =>
                      [8] =>
                      [9] => 20
                  )

          [goal_guest] => Array
                  (
                      [1] => 1
                      [2] => 2
                      [3] =>
                      [4] =>
                      [5] => 8
                      [6] =>
                      [7] =>
                      [8] =>
                      [9] => 20
                  )

          [matchesid] => Array
                  (
                      [1] => 1
                      [2] => 2
                      [3] => 3
                      [4] => 4
                      [5] => 5
                      [6] => 6
                      [7] => 7
                      [8] => 8
                      [9] => 9
                  )

          [x] => 25
              [y] => 10
          )
          Array
          (
          )

            
          Sobald ich es das Script erweitere:  
          ~~~php
            
          <?php  
            
          //include 'connect.php';  
          echo '<pre>';  
          print_r($_POST);  
          print_r($_GET);  
          echo '</pre>';  
            
          $xyz = $_POST['matchesid'];  
          $goal_home = $_POST['goal_home'];  
          $goal_guest = $_POST['goal_guest'];  
          ?>  
          
          

          kommt folgendes:

            
          Array  
          (  
          )  
          Array  
          (  
          )  
            
            
          Notice: Undefined index: matchesid in C:\xampp\htdocs\top_goal\new\bet.php on line 9  
            
          Notice: Undefined index: goal_home in C:\xampp\htdocs\top_goal\new\bet.php on line 10  
            
          Notice: Undefined index: goal_guest in C:\xampp\htdocs\top_goal\new\bet.php on line 11  
          
          

          Ich versteh gerade die Welt nicht mehr und wäre über jeden Hilfeansatz erfreut.

          Danke auch an alle vorherigen Helfer

          1. Om nah hoo pez nyeetz, känguru!

            $xyz = $_POST['matchesid'];
            $goal_home = $_POST['goal_home'];
            $goal_guest = $_POST['goal_guest'];

            Es gibt keinen Grund, die Variablen umzukopieren.

            Matthias

            --
            Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Inge und Ingenieur.

          2. Tach!

            Ich übergeb ja die Daten per Post, so lange ich sie im anderen Script nicht anspreche (egal ob if-Abfrage oder in andere Variable schreiben), sind sie vorhanden.

            Du kannst sie nicht überprüfen, ohne $_GET/$_POST "anzusprechen".

            Sobald ich es das Script erweitere:
            kommt folgendes: [leere Arrays]

            Es ist unwahrscheinlich, dass bei einer solch kleinen Script-Erweiterung die Daten plötzlich verschwinden. Es wird eher so sein, dass du sie in dem zweiten Versuch nicht (erneut) mitsendest. Füg mal noch die Ausgabe von $_SERVER['REQUEST_METHOD'] hinzu.

            dedlfix.

            1. Laut den header-Daten werden sie bei allen Versuchen mitgesendet.

              Hier nochmal die Ausgabe mit $_SERVER['REQUEST_METHOD']:

              Array
              (
                  [goal_home] => Array
                      (
                          [1] => 2
                          [2] => 2
                          [3] => 0
                          [4] => 1
                          [5] => 2
                          [6] => 1
                          [7] => 1
                          [8] => 1
                          [9] => 0
                      )

              [goal_guest] => Array
                      (
                          [1] => 2
                          [2] => 1
                          [3] => 2
                          [4] => 2
                          [5] => 2
                          [6] => 3
                          [7] => 3
                          [8] => 1
                          [9] => 2
                      )

              [matchesid] => Array
                      (
                          [1] => 1
                          [2] => 2
                          [3] => 3
                          [4] => 4
                          [5] => 5
                          [6] => 6
                          [7] => 7
                          [8] => 8
                          [9] => 9
                      )

              [x] => 56
                  [y] => 19
              )
              Array
              (
              )
              POST

              1. Tach!

                Laut den header-Daten werden sie bei allen Versuchen mitgesendet.
                Hier nochmal die Ausgabe mit $_SERVER['REQUEST_METHOD']:

                Welcher Fall ist das nun? Das sieht doch alles bestens aus.

                dedlfix.

          3. Hier mal noch das was Live HTTP Headers ausspuckt. Die Daten werden also meiner Ansicht nach übermittelt, aber verschwinden dann auf unerklärlicher Weise

            POST /bet.php HTTP/1.1  
            Host: example.de  
            User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:23.0) Gecko/20100101 Firefox/23.0  
            Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  
            Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3  
            Accept-Encoding: gzip, deflate  
            Referer: http://example.de/bets.html  
            Cookie: PHPSESSID=267mu0p7cr7tjcvc3mkaeah0k0  
            Connection: keep-alive  
            Content-Type: application/x-www-form-urlencoded  
            Content-Length: 531  
            goal_home%5B1%5D=2&goal_guest%5B1%5D=2&matchesid%5B1%5D=1&goal_home%5B2%5D=2&goal_guest%5B2%5D=1&matchesid%5B2%5D=2&goal_home%5B3%5D=0&goal_guest%5B3%5D=2&matchesid%5B3%5D=3&goal_home%5B4%5D=1&goal_guest%5B4%5D=2&matchesid%5B4%5D=4&goal_home%5B5%5D=2&goal_guest%5B5%5D=2&matchesid%5B5%5D=5&goal_home%5B6%5D=1&goal_guest%5B6%5D=3&matchesid%5B6%5D=6&goal_home%5B7%5D=1&goal_guest%5B7%5D=3&matchesid%5B7%5D=7&goal_home%5B8%5D=1&goal_guest%5B8%5D=1&matchesid%5B8%5D=8&goal_home%5B9%5D=0&goal_guest%5B9%5D=2&matchesid%5B9%5D=9&x=14&y=10  
            HTTP/1.1 302 Moved Temporarily  
            Date: Thu, 08 Aug 2013 15:55:56 GMT  
            Server: Apache/2.2.3 (CentOS)  
            Location: bet.php  
            Connection: close  
            Transfer-Encoding: chunked  
            Content-Type: text/html; charset=iso-8859-1  
            
            
            1. Tach!

              Hier mal noch das was Live HTTP Headers ausspuckt. Die Daten werden also meiner Ansicht nach übermittelt, aber verschwinden dann auf unerklärlicher Weise

              [code lang=html]

              HTTP-Header sind kein HTML. Wenn du die Formatierung als Block haben möchtest, nimm [code] ohne eine lang-Angabe.

              POST /bet.php HTTP/1.1
              Host: example.de

              HTTP/1.1 302 Moved Temporarily
              Location: bet.php

              Aha. Du schaust dir die Ausgabe des Scripts nach einem Redirect an, also nicht den ersten Durchlauf sondern einen zweiten. Dass da keine POST-Daten mehr da sind, wundert mich nicht.

              dedlfix.

            2. Hallo,

              POST /bet.php HTTP/1.1

              Host: example.de
              User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:23.0) Gecko/20100101 Firefox/23.0
              Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
              Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
              Accept-Encoding: gzip, deflate
              Referer: http://example.de/bets.html
              Cookie: PHPSESSID=267mu0p7cr7tjcvc3mkaeah0k0
              Connection: keep-alive
              Content-Type: application/x-www-form-urlencoded
              Content-Length: 531
              goal_home%5B1%5D=2&goal_guest%5B1%5D=2&matchesid%5B1%5D=1&goal_home%5B2%5D=2&goal_guest%5B2%5D=1&matchesid%5B2%5D=2&goal_home%5B3%5D=0&goal_guest%5B3%5D=2&matchesid%5B3%5D=3&goal_home%5B4%5D=1&goal_guest%5B4%5D=2&matchesid%5B4%5D=4&goal_home%5B5%5D=2&goal_guest%5B5%5D=2&matchesid%5B5%5D=5&goal_home%5B6%5D=1&goal_guest%5B6%5D=3&matchesid%5B6%5D=6&goal_home%5B7%5D=1&goal_guest%5B7%5D=3&matchesid%5B7%5D=7&goal_home%5B8%5D=1&goal_guest%5B8%5D=1&matchesid%5B8%5D=8&goal_home%5B9%5D=0&goal_guest%5B9%5D=2&matchesid%5B9%5D=9&x=14&y=10

                
              stop, stop! Hier hört der Request auf, fügen wir hier mal in Gedanken eine Leerzeile ein.  
              Nachfolgend die Antwort des Servers:  
                
              
              > ~~~
              
              HTTP/1.1 302 Moved Temporarily  
              
              > Date: Thu, 08 Aug 2013 15:55:56 GMT  
              > Server: Apache/2.2.3 (CentOS)  
              > Location: bet.php  
              > Connection: close  
              > Transfer-Encoding: chunked  
              > Content-Type: text/html; charset=iso-8859-1  
              > 
              
              

              Tja, wozu löst du hier einen Redirect aus? Damit veranlasst du den Browser, eine andere Ressource anzufordern, in deinem Fall sogar dieselbe Ressource nochmal - wobei der Location-Header auch noch falsch ist; er muss eine vollständige, absolute URL angeben.
              Dein Script wird also zweimal angefordert. Einmal per POST mit Daten, und einmal per GET ohne die Daten. Dabei wird der erste Request vermutlich vom Server intern abgefrühstückt und kommt gar nicht bei deinem Script an.
              Kläre also dringend, warum das passiert. Irgendwelche obskuren Rewrite-Regeln in der .htaccess *könnten* die Ursache sein. Das erklärt aber nicht, warum das beim vorhergehenden Versuch mit dem gekürzten Script nicht genauso passierte.

              Ciao,
               Martin

              --
              Auf jeden Menschen auf der ganzen Welt entfallen statistisch gesehen etwa 3000 Spinnen, wie Wissenschaftler jetzt festgestellt haben.
              Wer will meine haben? Denn ich will sie bstimmt nicht.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Hi

    ich baue gerade an einem Formular. Die Daten werden per POST übertragen, bisher ohne Probleme. Doch auf einmal ist das POST-Array immer leer. Ändere ich auf die GET-methode werden die Daten wunderbar übermittelt. Und ich habe nichts an dem Script geändert, es passiert von jetzt auf gleich...

    Jemannd eine Idee was das sein kann? Bin gerade relativ ratlos

    show some code please....

  3. Moin!

    ich baue gerade an einem Formular. Die Daten werden per POST übertragen, bisher ohne Probleme. Doch auf einmal ist das POST-Array immer leer. Ändere ich auf die GET-methode werden die Daten wunderbar übermittelt. Und ich habe nichts an dem Script geändert, es passiert von jetzt auf gleich...

    Eine typische Ursache bei solchen Problembeschreibungen ist, dass statt $_POST $POST nach dem Inhalt gefragt wird.

    Um sich von den gesendeten Daten zu überzeugen nimmt man am besten etwas primitives wie das hier:

      
    <?php  
    print '<h1>$_GET<h1>'";  
    print '<pre>';  
    print_r($_GET);  
    print '</pre>';  
      
    print '<h1>$_POST<h1>'";  
    print '<pre>';  
    print_r($_POST);  
    print '</pre>';  
      
    print '<h1>$_COOKIE<h1>'";  
    print '<pre>';  
    print_r($_COOKIE);  
    print '</pre>';  
      
    print '<h1>$_SESSION<h1>'";  
    print '<pre>';  
    print_r($_SESSION);  
    print '</pre>';  
      
    print '<h1>$_FILES<h1>'";  
    print '<pre>';  
    print_r($_FILES);  
    print '</pre>';  
      
    print '<h1>$_REQUEST<h1>'";  
    print '<pre>';  
    print_r($_REQUEST);  
    print '</pre>';  
      
    print '<h1>$_SERVER<h1>'";  
    print '<pre>';  
    print_r($_SERVER);  
    print '</pre>';  
      
    print '<h1>$_ENV<h1>'";  
    print '<pre>';  
    print_r($_ENV);  
    print '</pre>';  
      
    print '<h1>$GLOBALS<h1>'";  
    print '<pre>';  
    print_r($GLOBALS);  
    print '</pre>';  
    ?>
    

    Jörg Reinholz

    1. Om nah hoo pez nyeetz, Jörg Reinholz!

      Ergänzung:

      <?php
      print '<h1>$_GET<h1>'";

      //

      print '</pre>';
      ?>

        
      Wenn man diesen Code etwa als kontrollausgabe.php abspeichert, lässt er sich einfach über `include()`{:.language-php} an jedem neuralgischen Punkt einsetzen.  
        
      Matthias
      
      -- 
      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen [XING und Xingyiquan](http://selfhtml.apsel-mv.de/java-javascript/index.php?buchstabe=X#xing).  
      ![](http://www.billiger-im-urlaub.de/kreis_sw.gif)  
      
      
      1. Moin!

        Ergänzung:
        Wenn man diesen Code etwa als kontrollausgabe.php abspeichert, lässt er sich einfach über include() an jedem neuralgischen Punkt einsetzen.

        Richtig. Genau so mache ich das auch. Etwas wie dieses Skript gehört quasi zu meinen "Entwicklungswerkzeugen".

        Jörg Reinholz

      2. હેલો

        Wenn man diesen Code etwa als kontrollausgabe.php abspeichert, lässt er sich einfach über include() an jedem neuralgischen Punkt einsetzen.

        Das geht aber um ein vielfaches einfacher, wenn man Funktionen verwendet (zumal Jörgs Code Fehlerhaft ist, ein Copy&Paste Fehler, einmal durch das ganze Script). In einer Funktion kann man sich das irgendwo als „Utils“ speichern, und immer da aufrufen, wo man es braucht.

           function get_server_info ($_array)  
           {  
              $_return = '';  
              foreach ($_array AS $_key => $_val)  
                  $_return .= sprintf('<h1>%1$s</h1><pre>%2$s</pre>', $_key  
                                                                    , $_val ? print_r ($_val, 1) : 'Leer');  
              return $_return; // Fertig  
           }  
          
          // Ausgabe  
          print get_server_info (array('GET' => $_GET  
                                     , 'POST' => $_POST  
                                     , 'Server' => $_SERVER  
                                     , 'Cookie' => $_COOKIE  
                                     , 'Request' => $_REQUEST  
                                     ));
        

        બાય

        --
         .
        ..: