Yeti: Newbiefrage: Warum funktioniert GET korrekt, aber POST nicht?!?

Hi,
ich stehe seit einer geschlagenen halben Stunde total auf dem Schlauch, weil folgender Code:

<form action="./" method="get">
 <input type="hidden" name="modul" value="hauptmodul">
 <input type="hidden" name="seite" value="admin_user">
 <input type="hidden" name="action" value="edit">
 <input type="hidden" name="uid" value="1">
 <input type="image" align="center" src="img/edit.png" style="border: none;" alt="Benutzer bearbeiten">
</form>

mir korrekterweise die gewünschten Daten liefert:
<? print_r($_REQUEST); ?>
Array
(
    [modul] => hauptmodul
    [seite] => admin_user
    [action] => edit
    [uid] => 1
    [x] => 9
    [y] => 8
    [PHPSESSID] => ...
)

aber derselbe Code mit "post" als Methode NICHT!
Ausgabe:
<? print_r($_REQUEST); ?>
Array
(
    [PHPSESSID] => ...
)

Bin ich blöd??!

Der Yeti

--
Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
Und bin so klug als wie zuvor!
sh:( fo:| ch:? rl:? br:  n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
http://community.de.selfhtml.org/fanprojekte/selfcode.htm
  1. Hallo!

    Also eigentlich sehe - nach Überfliegen von http://at.php.net/reserved.variables keinen Fehler. Jedenfalls ist es besser $_POST im Zusammenhang mit method=post und $_GET im Zusammenhang mit method=get zu verwenden. Probier das mal!

    Das dient auch der Sicherheit, siehe http://at.php.net/manual/de/ini.sect.data-handling.php#ini.register-globals

    Beste Grüße
    Viennemade

    1. Hi,

      Also eigentlich sehe - nach Überfliegen von http://at.php.net/reserved.variables keinen Fehler.

      Ich auch nicht ... :-(

      Jedenfalls ist es besser $_POST im Zusammenhang mit method=post und $_GET im Zusammenhang mit method=get zu verwenden. Probier das mal!

      Schon, aber das liefert genauso ein leeres Array.

      Dinge, die ich schon probiert habe: POST groß zu schreiben, den enctype zu setzen, index.php anstatt ./ anzugeben, $_SERVER["SCRIPT_NAME"] anstatt ./ anzugeben (hilft nix, weil die Seite wird ja korrekt aufgerufen...

      Ich befürchte fast, dass wenn ich es jetzt nicht behebe, es auch auf den anderen Seiten innerhalb dieses Projektes auftritt. Ich will aber nicht immer alle Daten per GET übergeben _müssen_! Aaaaaaah!

      Der wochenendebrauchende Yeti

      --
      Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
      Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
      Und bin so klug als wie zuvor!
      sh:( fo:| ch:? rl:? br:  n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
      http://community.de.selfhtml.org/fanprojekte/selfcode.htm
      1. Hallo!

        Dinge, die ich schon probiert habe: POST groß zu schreiben, den enctype zu setzen, index.php anstatt ./ anzugeben, $_SERVER["SCRIPT_NAME"] anstatt ./ anzugeben (hilft nix, weil die Seite wird ja korrekt aufgerufen...

        Stimmt, das Action-Attribut schaut komisch aus im ersten Posting. Und eine name-Attribut?

        Beste Grüße
        Viennamade

        1. Hi,

          Stimmt, das Action-Attribut schaut komisch aus im ersten Posting. Und eine name-Attribut?

          Wieso komisch? Verweist auf den aktuellen Pfad und der Webbrowser gibt dann die index.php zurück (Kurzschreibweise ;-) ). Klappt auch, wie es soll.

          Habe jetzt bemerkt, dass es gar nicht das erste POST-Formular auf dieser Seite ist. Das Loginformular funktioniert ebenfalls über POST und klappt einwandfrei.

          *kopfschüttel*

          Der Yeti

          --
          Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
          Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
          Und bin so klug als wie zuvor!
          sh:( fo:| ch:? rl:? br:  n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
          http://community.de.selfhtml.org/fanprojekte/selfcode.htm
          1. Moin!

            Habe jetzt bemerkt, dass es gar nicht das erste POST-Formular auf dieser Seite ist. Das Loginformular funktioniert ebenfalls über POST und klappt einwandfrei.

            Dann solltest du jetzt ganz schnell deine Seite validieren lassen - und wenn da alles OK ist, und es immer noch nicht geht, uns den Seitenquelltext (nur HTML) zeigen.

            - Sven Rautenberg

            1. Hi,

              Dann solltest du jetzt ganz schnell deine Seite validieren lassen - und wenn da alles OK ist, und es immer noch nicht geht, uns den Seitenquelltext (nur HTML) zeigen.

              Ganz schnell klappt wohl nicht mehr. Da kam das Wochenende dazwischen.
              Die Seite ist valides HTML 4.01 und ich glaube auch nicht, dass es damit zu tun hat. Aber falls du einen Fehler findest, bin ich natürlich sehr dankbar.
              Bitteschön:

              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
              <html>
              <head>
               <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
               <meta http-equiv="Cache-Control" content="max-age=1,no-cache">
               <meta http-equiv="Pragma" content="no-cache">
               <meta http-equiv="Expires" content="-1">
               <title>...</title>
               <script type="text/javascript" src="js.php?m=hauptmodul&amp;s=admin"></script>
               <!-- compliance patch for microsoft browsers -->
               <!--[if lt IE 7]>
                <script src="ie7/ie7-core.js" type="text/javascript"></script>
                <script src="ie7/ie7-fixed.js" type="text/javascript"></script>
               <![endif]-->
                 <link href="css.php?c=0065aa&amp;h=ccccee" rel="stylesheet" type="text/css">
              </head>
              <body onLoad="">
               <script type="text/javascript"> window.onerror = handleError; var startZeit = new Date(); </script>

              <div id="divoben" class="fix">
                <table width="100%" border="0" cellpadding="0" cellspacing="0" class="dontprint">
                 <tr style="background: url('img/bg1.png'); background-repeat: repeat-x; height: 27px;">
                  <td class="w" valign="bottom" style="padding-left: 7px; padding-bottom: 3px;" nowrap>
                   <b>Angemeldet als ...</b>
                  </td>
                  <td align="right" valign="bottom" style="padding-right: 10px; padding-bottom: 3px;" nowrap>
                   <span class="rot">|</span> <a href="./?seite=main" class="menue up">&raquo;Hauptmodul&laquo;</a>
                   <span class="rot">|</span> <a href="logout.php" class="menue up">Abmelden</a>
                <span class="rot">|</span> <button onClick="location.href='logout.php?and=close'" style="width: 25px; height: 25px; margin-right: -10px;">x</button>
                  </td>
                 </tr>
                </table>
                <table width="100%" border="0" cellpadding="0" cellspacing="0" class="dontprint">
                 <tr style="background: url('img/bg2.png'); background-repeat: repeat-x; height: 36px;">
                  <td style="width: 40px;"><img src="img/logo.png" alt="Logo"></td>
                  <td align="right" valign="top" style="width: 90%; padding-right: 10px;">
                   <span class="shadow">
                    <a href="./?modul=hauptmodul&amp;seite=main" class="menue" id="hauptmodulmainMenue">Hauptmen&uuml;</a> &nbsp;
                    <a href="./?modul=hauptmodul&amp;seite=admin_user" class="menue u" id="hauptmoduladminMenue">Benutzerverwaltung</a> &nbsp;
                    <a href="./?modul=hauptmodul&amp;seite=stamm" class="menue" id="hauptmodulstammMenue">Stammdaten</a> &nbsp;
                    <a href="./?modul=hauptmodul&amp;seite=rechkreis" class="menue" id="hauptmodulrechkreisMenue">Nummernkreise</a> &nbsp;
                    <a href="./?modul=hauptmodul&amp;seite=abrech" class="menue" id="hauptmodulabrechMenue">Abrechnung/Storno</a> &nbsp;
                    <a href="./?modul=hauptmodul&amp;seite=druck" class="menue" id="hauptmoduldruckMenue">Rechnungsdruck</a> &nbsp;
                    <a href="./?modul=hauptmodul&amp;seite=suchen" class="menue" id="hauptmodulsuchenMenue">Suchen</a> &nbsp;
                   </span>
                  </td>
                 </tr>
                </table>
               </div>
               <h1 style="margin: 0px;" class="fade">...</h1>
               <h2>Benutzeradministration</h2>
               <p>
                Vorhandene Benutzer:
               </p>
               <table align="center" border="0" cellspacing="0" cellpadding="3">
                <tr>
                 <th class="c_b c_r">#</th>
                 <th class="c_b c_r">Login</th>
                 <th class="c_b c_r">Berechtigungen</th>
                 <th class="c_b">Aktion</th>
                </tr>
                <tr>
                 <td class="c_r">1</td>
                 <td class="c_r">...</td>
                 <td class="c_r">...</td>
                 <td class="" align="center">
                  <form action="./" method="post" name="getForm">
                   <input type="hidden" name="modul" value="hauptmodul">
                   <input type="hidden" name="seite" value="admin_user">
                   <input type="hidden" name="action" value="edit">
                   <input type="hidden" name="uid" value="1">
                   <input type="image" align="middle" src="img/edit.png" style="border: none;" alt="Benutzer bearbeiten">
                  </form>&nbsp;
                  <form action="./" method="get" name="getForm">
                   <input type="hidden" name="modul" value="hauptmodul">
                   <input type="hidden" name="seite" value="admin_user">
                   <input type="hidden" name="action" value="delete">
                   <input type="hidden" name="uid" value="1">
                   <input type="image" align="middle" src="img/delete.png" style="border: none;" alt="Benutzer l&ouml;schen">
                  </form>
                 </td>
                </tr>
               </table>
                <div id="divunten" class="fix">
                 <table width="100%" border="0" cellspacing="0" cellpadding="0">
                  <tr style="height: 27px; background: url('img/bg3.png'); background-repeat: repeat-x;">
                   <td align="left" valign="bottom" class="stats" nowrap>powered by PHP 5.0.1 &amp; MySQL 4.0.20a-debug</td>
                   <td align="right" valign="bottom" class="stats" nowrap>
                   <script type="text/javascript">
                    var endZeit = new Date();
                    var diff = (endZeit - startZeit)/1000;
                    var sec = (diff == 0) ? diff.toString().replace(/./,",")+" Sekunden." : "Nullkommanix.";
                    document.write("Seite geladen in "+sec);
                   </script>
                    Zwei Datenbankabfragen wurden in 0,1104 Sekunden ausgef&uuml;hrt.
                   </td>
                  </tr>
                 </table>
                </div>
               </body>
              </html>

              Der Yeti

              --
              Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
              Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
              Und bin so klug als wie zuvor!
              sh:( fo:| ch:? rl:? br:  n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
              http://community.de.selfhtml.org/fanprojekte/selfcode.htm
              1. (Nur so nebenbei gefragt:)

                Könnte es nicht sein, dass es problematisch ist, zwei prinzipiell ja doch VERSCHIEDENEN Formular-Objekten das GLEICHE name-Attribut zuzuweisen?

                (...)

                <form action="./" method="post" name="getForm">

                ??-----------------------------------------^

                <input type="hidden" name="modul" value="hauptmodul">
                     <input type="hidden" name="seite" value="admin_user">
                     <input type="hidden" name="action" value="edit">
                     <input type="hidden" name="uid" value="1">
                     <input type="image" align="middle" src="img/edit.png" style="border: none;" alt="Benutzer bearbeiten">
                    </form>&nbsp;

                <form action="./" method="get" name="getForm">

                ??----------------------------------------^

                <input type="hidden" name="modul" value="hauptmodul">
                     <input type="hidden" name="seite" value="admin_user">
                     <input type="hidden" name="action" value="delete">
                     <input type="hidden" name="uid" value="1">
                     <input type="image" align="middle" src="img/delete.png" style="border: none;" alt="Benutzer l&ouml;schen">
                    </form>

                (...)

                mit herzlichem Gruß an Yeti

                Özi

  2. Hi,

    ist das in allen Browsern der Fall oder nur in einem?

    E7

    1. Hi,
      das ist vielleicht ein Anhaltspunkt.
      Habe es mit IE 5.00 und Opera 7.52 getestet, im IE klappt es nicht, in Opera schon. Da aber nur der IE installiert ist auf den Anwendersystemen, muss es da auf jeden Fall auch klappen.
      Der Yeti

      --
      Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
      Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
      Und bin so klug als wie zuvor!
      sh:( fo:| ch:? rl:? br:  n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
      http://community.de.selfhtml.org/fanprojekte/selfcode.htm
      1. Hi,

        Habe es mit IE 5.00 und Opera 7.52 getestet, im IE klappt es nicht, in Opera schon.

        was zeigt, dass das ein Bug im IE sein könnte...

        Da aber nur der IE installiert ist auf den Anwendersystemen, muss es da auf jeden Fall auch klappen.

        Das ist doch gleich ein Grund, den Anwender zum Browserwechsel zu überreden ;)

        Mal ein paar Fragen was mir zum Quellcode noch einfallen:
         - action="./" - was passiert, wenn du hier andere Angaben machst (absolut, gar nix...)
         - <input type="submit"/> gibt's nicht, das ganze wird denke ich über die Bilder abgewickelt - vielleicht ein Bug im IE, dass dieser nicht mit PNGs in Formularen umgehen kann?
         - <!--[if lt IE 7]> - ändern die JavaScripte vielleicht was?
         - ist beim Nutzer evtl. ein Proxy dazwischen???

        E7

  3. Hello,

    hast Du die Lösung gefunden?

    erstmal würde ich nicht $_REQUEST auswerten, sondern $_POST oder $_GET separat. Wer weiß, wie Deine gpc_order eingetestellt ist...

    Und dann würde ich auch mal den enctype="multipart/form-data" setzen. Dann sendet der IE auf jeden Fall in einem Format, dass PHP verarbeiten kann.

    Und drittens kannst Du Deine Actionh auch mal testhalber auf http://selfhtml.bitworks.de/debug/kontrolle.php legen und Dir anschauen, was ankommt, speziell die Header.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau