Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit POST und GET in einem Formular

Einklappen

Neue Werbung 2019

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

  • Problem mit POST und GET in einem Formular

    Hallo Leute,
    ich habe eine Weboberfläche zur Versendung von E-Mails gebaut.
    Ich habe einmal einen POST Bereich um die Textarea mit E-Mail Inhalt über ein paar Textboxen mit Name usw. zu füllen und updaten zu können. Hier wird die Seite nur geupdatet wenn man den Update Button drückt. (Neu aufgerufen und der Text ist dann mit Name usw. geupdatet)

    Weiter unten habe ich ein GET Bereich mit Versenden Button um den E-Mail Text versenden zu können der in der Textarea ist und diesen Text an mail.php weitergeben zu können.

    Wie kann ich mir nun noch den anderen Inhalt wie Name usw. aus den Textboxen an mail.php übergeben lassen die ich im POST Bereich habe? Denn es funktioniert ja immer nur ein SubmitButton pro Bereich (POST, GET).

    Danke schonmal im vorraus

  • #2
    Welchen tieferen Sinn soll diese Unterteilung haben?
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Code ?

      Das mischen von $_POST und $_GET ist eine Unart, die ich nicht verstehen kann.
      Ein Formular kann man doch problemlos auf eine Methode bringen und dann testen, ob der Submit-Button gedrückt wurde.

      PHP-Code:
      <?PHP
      if(isset($_POST['senden']) AND ($_POST['senden'] == 'OK'))
      {
          
      print_r($_POST);
      }


      ?>

          <form method="POST" action="<?PHP echo $_SERVER['SCRIPT_NAME']; ?>">
          <input type="text" name="texteingabe" value="<?PHP echo $_POST['texteingabe']; ?>">
          <input type="submit" name="senden" value="OK">
          <input type="submit" name="refresh" value="REFRESH">
          </form>
      gruss sys

      Kommentar


      • #4
        Wie die beiden schon gesagt haben, macht die POST GET aufteilung nicht viel Sinn. Das kenne ich leider auch von mir das ich Dinge tue bei denen ich mich im Nachhinein frage: Wieso zum Teufel?

        Oft ist es das beste noch mal neu anzufangen.

        Aber vielleicht denken wir ja auch falsch und du hast einen Hinterngedanken zu der Sache?

        Kommentar


        • #5
          Zitat von oelgemeyer Beitrag anzeigen
          Aber vielleicht denken wir ja auch falsch und du hast einen Hinterngedanken zu der Sache?
          Hinterngedanken sind immer gut

          Also ich frage mich wozu man GET bei Mailgezeugse überhaupt verwenden sollte.
          Die mysql_* Erweiterung ist veraltet!
          Besser: mysqli_* oder (noch besser) PDO

          Kommentar


          • #6
            Hab gehofft jemand bemerkt es.

            Kommentar


            • #7
              Hi Leute,

              Ich bin neu hier und auch Anfänger in PHP.

              Seit 3 Monaten bin ich erst dabei, habe dennoch mit einem recht großen Projekt angefangen.
              Mit diesem Forum hat mir Google bei jedwedem Problem geholfen
              Dabei geht es um eine Gutscheinverwaltung aber darum geht es nicht, meine Frage bezieht sich auf die Antwort von Sysop: "
              PHP-Code:
              if(isset($_POST['senden']) AND ($_POST['senden'] == 'OK')) 
              "
              Da ich mit der Buttonüberprüfung teilweise Probleme hatte: der erste Teil der Bedingung reicht nicht aus um zu überprüfen ob der Button gesetzt ist oder nicht? Also der erste Teil überprüft es noch nicht sondern erst mit dem 2.?

              Wie gesagt ich bin Anfänger und habe mich bis jetzt nur am Manual, w3schools, eurem Forum etc entlanggehangelt aber habe trotzdem noch nicht geschnallt welcher Teil jetzt genau wann überprüft oder empfängt.

              Grüße Mista

              Kommentar


              • #8
                Doch, der erste Teil prüft, ob der Button gesetzt ist. Allerdings wird erst mit dem zweiten geprüft, ob er auch mit dem Value "OK" übereinstimmt.
                Allerdings frage ich mich hier, wofür der erste Teil überhaupt gut sein soll, denn aus
                PHP-Code:
                 $_POST['senden'] == "OK" 
                resultiert auch
                PHP-Code:
                 isset($_POST['senden']) == true 
                Edit: Tut mir Leid, das war Murks. Weiterlesen und nicht beachten!
                Die mysql_* Erweiterung ist veraltet!
                Besser: mysqli_* oder (noch besser) PDO

                Kommentar


                • #9
                  Also könnte sowohl der Erste als auch der 2. für sich alleine da stehen ?

                  Kommentar


                  • #10
                    Nein!

                    isset() prüft "ob eine Variable existiert und ob sie nicht NULL ist" (Quelle)

                    $_POST['senden'] == "OK" prüft ob der zum Schlüssel "senden" des Arrays $_POST gehörende Wert == "OK" ist. Dazu muss dieser Schlüssel aber existieren. Das wird zunächst mit isset() geprüft.

                    Das wirft aber nur eine Notice. Siehe: http://www.php-kurs.com/notice-undef...ex-meldung.htm

                    Kommentar


                    • #11
                      Okay, mein Fehler. Schande über mich
                      Die mysql_* Erweiterung ist veraltet!
                      Besser: mysqli_* oder (noch besser) PDO

                      Kommentar


                      • #12
                        Nein. Aber check mal deine error reporting Einstellungen. Ist vermutlich nicht auf E_ALL eingestellt und dann werden dir diese notices potenziell nicht angezeigt.

                        Kommentar


                        • #13
                          ach und $_SERVER['SCRIPT_NAME'] sollte man möglichst vermeiden:
                          http://www.vlmedia.de/279/php-self-manipulation
                          https://github.com/Ma27
                          Javascript Logic is funny:
                          [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

                          Kommentar


                          • #14
                            Sollte ich dann vielleicht besser nicht nur den Button sondern auch die zu übergebenden Formulareingaben so abfragen ?

                            Kommentar


                            • #15
                              Zitat von Ma27 Beitrag anzeigen
                              ach und $_SERVER['SCRIPT_NAME'] sollte man möglichst vermeiden:
                              http://www.vlmedia.de/279/php-self-manipulation
                              Obiger Link bezieht sich auf $_SERVER['PHP_SELF'] b.z.w $_SERVER['REQUEST_URI'].

                              $_SERVER['SCRIPT_NAME'] sollte genau diese Manipulation verhindern und stellt den eher sicheren Weg dar. Im Link ist es die einzige der drei Variablen, die nicht manipuliert wurde!

                              Zitat von mistazim Beitrag anzeigen
                              Sollte ich dann vielleicht besser nicht nur den Button sondern auch die zu übergebenden Formulareingaben so abfragen ?
                              Je nachdem, welchen Standard du anstrebst. Ich code inzwischen eigentlich nur noch mit einem error_reporting E_ALL und versuche auch Notice-Meldungen zu vermeiden.

                              Genaugenommen müsste im obigen Code auch die Texteingabe getestet und gegebenenfalls manipuliert werden (da scheiden sich aber sicher die Geister).

                              PHP-Code:
                              <?PHP
                              if(isset($_POST['senden']) AND ($_POST['senden'] == 'OK'))
                              {
                                  
                              print_r($_POST);
                              }

                              if(!isset(
                              $_POST['texteingabe'])) $_POST['texteingabe'] = '';

                              ?>

                                  <form method="POST" action="<?PHP echo $_SERVER['SCRIPT_NAME']; ?>">
                                  <input type="text" name="texteingabe" value="<?PHP echo $_POST['texteingabe']; ?>">
                                  <input type="submit" name="senden" value="OK">
                                  <input type="submit" name="refresh" value="REFRESH">
                                  </form>
                              gruss sys

                              Kommentar

                              Lädt...
                              X