Ankündigung

Einklappen
Keine Ankündigung bisher.

Post-Form kommt als GET-Data an

Einklappen

Neue Werbung 2019

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

  • Post-Form kommt als GET-Data an

    Ich versuche ein Programm zu schreiben, welches GET und POST Daten anders behandelt.
    Dafür habe ich folgende PHP Abfrage:
    PHP-Code:
    $method=filter_input(INPUT_SERVER'REQUEST_METHOD');
    if ( 
    $method=== 'POST') {
       
    //code für POST
    }else{
       
    //code für GET

    Das Problem ist nur, dass dieser IF-Zweig nie ausgeführt und das ist insofern kein Wunder, als dass eine Ausgabe der $method Variable anzeigt, dass sie "GET" ist, allerdings steht in meinen Probefomular eindeutig POST als Method drinnen und deswegen verstehe ich das nicht:
    HTML-Code:
    <h1>Storage test</h1>
    <form action="/myphp.php"  method="POST">
    <label for="fname">First name:</label><br>   <input type="text" id="fname" name="fname"><br>
    <label for="lname">Last name:</label><br>   <input type="text" id="lname" name="lname"><br><br>  
    <input type="submit" value="Submit">
    </form>

  • #2
    $_post, $_get

    Kommentar


    • #3
      Zitat von Alpha Beitrag anzeigen
      $_post, $_get
      Damit kann ich leider nichts anfangen.

      Kommentar


      • #4
        PHP-Code:
          $method=strtoupper(filter_input(INPUT_SERVER'REQUEST_METHOD')); 

        Kommentar


        • #5
          Zitat von Hewan Beitrag anzeigen
          PHP-Code:
           $method=strtoupper(filter_input(INPUT_SERVER'REQUEST_METHOD')); 
          Hat leider nichts bewirkt.

          Kommentar


          • #6
            PHP-Code:
            $_server['request_method']; 
            Keine Ahnung was hier läuft, aber mein Text wird immer klein geschrieben. Du musst es natürlich groß schreiben. Aber schau einfach ins Handbuch.

            Kommentar


            • #7
              Zitat von Alpha Beitrag anzeigen
              $_server['request_method'];
              Liefert leider auch GET zurück.

              Kommentar


              • #8
                Hast du überhaupt schon mal nachgeschaut, was wirklich im HTTP-Request steht, den der Browser sendet?

                Kommentar


                • #9
                  Zitat von hellbringer Beitrag anzeigen
                  Hast du überhaupt schon mal nachgeschaut, was wirklich im HTTP-Request steht, den der Browser sendet?
                  Das habe ich auf diese Anregung hin wirklich mal geschaut und zwar mit den HTTP-Live-Header von Firefox (https://addons.mozilla.org/en-US/fir...p-header-live/), circa das war die Ausgabe (ich habe die echte Host-Addresse durch localhost ersetzt)

                  Code:
                  http://localhost/myphp.php
                  Host: localhost
                  User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
                  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
                  Accept-Language: de,en-US;q=0.7,en;q=0.3
                  Accept-Encoding: gzip, deflate
                  Content-Type: application/x-www-form-urlencoded
                  Content-Length: 19
                  Origin: http://localhost
                  Connection: keep-alive
                  Referer: http://localhost/
                  Upgrade-Insecure-Requests: 1
                  fname=abc&lname=def
                  POST: HTTP/1.1 301 Moved Permanently
                  Server: nginx/1.18.0 (Ubuntu)
                  Date: Tue, 12 Jan 2021 23:29:18 GMT
                  Content-Type: text/html
                  Content-Length: 178
                  Location: http://localhost/myphp.php/
                  Connection: keep-alive
                  ---------------------
                  http://localhost/myphp.php/
                  Host: localhost
                  User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
                  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
                  Accept-Language: de,en-US;q=0.7,en;q=0.3
                  Accept-Encoding: gzip, deflate
                  Referer: http://localhost/
                  Connection: keep-alive
                  Upgrade-Insecure-Requests: 1
                  
                  POST: HTTP/1.1 200 OK
                  Server: nginx/1.18.0 (Ubuntu)
                  Date: Tue, 12 Jan 2021 23:29:18 GMT
                  Content-Type: text/html; charset=UTF-8
                  Transfer-Encoding: chunked
                  Connection: keep-alive
                  Content-Encoding: gzip
                  ---------------------
                  http://localhost/favicon.ico
                  Host: localhost
                  User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
                  Accept: image/webp,*/*
                  Accept-Language: de,en-US;q=0.7,en;q=0.3
                  Accept-Encoding: gzip, deflate
                  Connection: keep-alive
                  Referer: http://localhost/myphp.php/
                  
                  GET: HTTP/1.1 404 Not Found
                  Server: nginx/1.18.0 (Ubuntu)
                  Date: Mon, 11 Jan 2021 15:07:52 GMT
                  Content-Type: text/html
                  Content-Encoding: gzip
                  ---------------------
                  Zwei Ding sind mir dabei aufgefallen:
                  1) Das Plugin hat es deutlich als POST gekennzeichnet. Und selbst Wireshark hat bestättigt, dass die Requestmethod POST ist.
                  2) Diese kommische 301 Meldung.
                  Aber ich habe auch folgendes getan, ich habe
                  PHP-Code:
                    foreach($_REQUEST as $k=>$v){     echo $k." ".$v."<br />"; } 
                  zum Debugging in meinen Code eingefügt, aus irgendwelchen Gründen scheinen die POST Daten nicht anzukommen.

                  Kommentar


                  • #10
                    Es wird ein HTTP-Redirect gemacht. Wenn das nicht von PHP aus passiert, ist irgendwas beim Webserver falsch konfiguriert.

                    Kommentar


                    • #11
                      Hast du veilleicht ein Ajax request? ich hatte mal ein ähnliches Problem bis ich dann irgendwann festgestellt habe dass ich zwei unterschiedliche jquery versionen eingebunden habe und meine POST ajax requests wurden warum auch immer auf GET umgestellt..

                      Kommentar


                      • #12
                        Zu: Diese komische 301 Meldung.
                        Hast du mal geschaut ob du eine htaccess Datei hast?

                        PHP-Code:
                        <?php
                        $method
                        =filter_input(INPUT_SERVER'REQUEST_METHOD');

                        if ( 
                        $method === 'POST' ) {
                           echo 
                        "POST hat Daten";
                        }else{
                           echo 
                        "GET ist standard";
                        }  
                        ?>
                        <!DOCTYPE html>
                        <html lang="de">
                        <head>
                        <title>untitled</title>
                        <meta charset="utf-8">
                        </head>
                        <body>
                            <form method="post">
                                <label>Text eingeben:</label>
                                <input value="foo">
                                <button>per Post senden</button>
                            </form>
                        </body>
                        </html>
                        funktioniert bei mir und reagiert entsprechend richtig.

                        Kommentar

                        Lädt...
                        X