$_GET und $_POST

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

  • $_GET und $_POST

    Hallo,

    ich habe ein ziemlich verzwicktes Problem. Ich bastle gerade an einem Script, in welchem über die URL verschiedene Funktionen angesprechen werden.

    Diese werden über index.php?action=AKTION aufgerufen. Im Script fange ich dies über $_GET['action'] ab und treffe eine Auswahl mit Switch. Das funktioniert soweit auch prima. Ich kann testen, ob die Option gesetzt ist und ob diese evtl. leer ist und kann mit dem Wert, der bei der Option gesetzt ist die entsprechende Funktion aufrufen.

    Nun habe ich aber ein Problem. Aus verschiedenen Gründen, u.a. damit die Parameter nicht angezeigt werden, habe ich einige Formulare, die ich über die Methode POST versenden möchte.

    Ich habe z.B. einen Benutzernamen udn ein Kennwort, der in die Datenbank geschrieben werden sollen, außerdem soll das ganze über die Aktion insert eingespielt werden, also in etwa so: index.php?action=insert und weiterhin sollen Benutername und Kennwort übergeben werden.

    Wenn ich aber mit $_GET die Aktion überprüfe, dann gehen die Variablen, die ich über das Formular übergebe unter.

    Kann ich da was gegen machen?

    Danke, Chriss

  • #2
    die daten aus dem form musst du auch mit $_POST abprüfen.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      in $_REQUEST werden sowohl die variablen über get als auch die über post gespeichert ..

      wenn du also einen switch über das $_REQUEST - array machst, sollte alles funktionieren ..

      bedenke allerdings die sicherheitsrisiken ..
      wobei bei einem einfach 'action' sollte das keine rolle spielen - mach ich auch so ..

      aber passwörter zb übertrage ich nur per post,
      deshalb frag ich da auch nur $_POST ab ..
      mfg,
      [color=#0080c0]Coragon[/color]

      Kommentar


      • #4
        Hmm, wie bekomme ich das denn mit $_REQUEST hin? Kann mir evtl. jemand ein Beispiel geben?

        Ich habe meine Formular, dass über POST ein verstecktes Eingabefeld mit dem Namen ACTION und dem Wert INSERT übermittelt. Außerdem werden über dieses Formular noch beispielsweise dir Felder PASSWORD und UNAME übermittelt (im Original werden noch wesentlich mehr Formularfelder übermittelt).

        Das könnte ich ja komplett über $_POST auswerten. Jetzt ist es aber so, dass auch eine URL-Eingabe von "index.php?action=view" möglichst ist. Diese muss ich über $_GET auswerten. Jetzt habt ihr mir den Hinweis gegeben über ein SWITCH in Verbindung mit $_REQUEST das ganze auszuwerten, das $_REQUEST beides auswerten kann, aber wie genau setze ich $_REQUEST mit meinem Problem ein?

        Daneben habe ich noch ein Formular, in dem ich OPTIONS-Felder verwende und bei diesen OPTIONS-Feldern habe ich onchange"this.form.submit()" eingebunden. Somit wird das Formular gleich abgesendet, wenn etwas ausgewählt wird. Dieses Formular bekomme ich nicht über POST versendet.

        Woran kann das liegen und bereitet mir das hier für mein Problem zusätzliche Schwierigkeiten?

        Danke, Chriss

        Kommentar


        • #5
          $_REQUEST['action'] beinhaltet den wert, wenn er über GET oder POST übergeben wurde.

          wenn er über GET und POST übergeben wurde, wird einer der beiden werte den anderen überschreiben - welcher in diesem falle "gewinnt", hängt von der einstellung variables_order ab.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Achso, d.h. ich ersetze damit einfach meine gesamten Abfragen, wie z.B. if (isset(G_ET[''])) und if (empty($_GET[''])) durch $_REQUEST.

            Ich werde das mal umscripten und melde mich wieder. Muss ich für mein Query, wo ich z.B. das Passwort und den Username in die Datenbank schreiben muss, für jede Variable vorher überprüfen, ob sie vorhanden oder gesetzt ist?

            Danke erst einmal, Chriss

            Kommentar


            • #7
              Original geschrieben von Tomcat Chriss
              Muss ich für mein Query, wo ich z.B. das Passwort und den Username in die Datenbank schreiben muss, für jede Variable vorher überprüfen, ob sie vorhanden oder gesetzt ist?
              wenn du bei "scharfem" error reporting level keine notice über einen undefined index bekommen willst, ja.

              aber das solltest du ja sowieso so machen (sowie auf inhalt prüfen), bevor du andernfalls unvollständige daten in deine DB schreibst.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                O.K., ich glaube soweit funktioniert es jetzt. Aber mit dem Schreiben in die DB das ist natürlich ziemlich heavy, wenn ich 30 mal überprüfen muss, ob die jeweilige Variable vorhanden ist und/oder leer ist. Das ist nicht nur ziemlich viel gecode, sondern auch unübersichtlich.

                Kann ich das irgendwie über ein Array abfangen, so dass ich z.B. über eine Schleife $_REQUEST[0] - $_REQUEST[29] überprüfe und nicht $_REQUEST['password'], $_REQUEST['uname'] ... ?

                Danke, Chriss

                Kommentar


                • #9
                  Kann ich das irgendwie über ein Array abfangen, so dass ich z.B. über eine Schleife $_REQUEST[0] - $_REQUEST[29] überprüfe und nicht $_REQUEST['password'], $_REQUEST['uname'] ... ?
                  ich bin mir fast sicher, daß es eine function dafür gibt, für das umwandeln von assoziativen in indizierte arrays ...
                  Die Zeit hat ihre Kinder längst gefressen

                  Kommentar


                  • #10
                    Original geschrieben von Tomcat Chriss
                    Kann ich das irgendwie über ein Array abfangen, so dass ich z.B. über eine Schleife $_REQUEST[0] - $_REQUEST[29] überprüfe und nicht $_REQUEST['password'], $_REQUEST['uname'] ... ?
                    schaue mal bei den codeschnipsel vorbei. normalize()
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      musst ja nicht zwingend eine for-schleife nehmen.

                      foreach geht genauso gut.

                      außerdem ist evtl interessant, dass isset mehrere parameter haben kann.

                      Kommentar


                      • #12
                        Jetzt bin ich verwirrt . Was verwende ich denn nun am besten, um mein Problem zu lösen?

                        Danke, Chriss

                        Kommentar


                        • #13
                          such dir was aus!
                          Zuletzt geändert von TobiaZ; 17.01.2004, 20:55.

                          Kommentar


                          • #14
                            Also,

                            ich habe zu foreach und $_REQUEST folgendes im Forum gefunden:

                            PHP-Code:
                            foreach ($_REQUEST as $k=>$v)
                            echo 
                            "<br>$k="htmlentities($v); 
                            Die Ausgabe ist dann:

                            Variablenname=Variablenwert

                            Das ist schon sehr brauchbar so, allerdings möchte ich das nun in die Datenbank schreiben, möchte allerdings den ersten Eintrag, der action=insert enthält, und deln letzten Eintrag, der Informationen zum Cookie ausgibt nicht mit einfügen.

                            Wie bekomme ich nun hin, dass alle Zeilen, mit Ausnahme der ersten und der letzten Zeile, in die Datenbank geschrieben werden?

                            Danke, Chriss

                            Kommentar


                            • #15
                              Wie bekomme ich nun hin, dass alle Zeilen, mit Ausnahme der ersten und der letzten Zeile, in die Datenbank geschrieben werden?
                              wo ist das problem?
                              Die Zeit hat ihre Kinder längst gefressen

                              Kommentar

                              Lädt...
                              X