Ankündigung

Einklappen
Keine Ankündigung bisher.

file_get_contents ist leer

Einklappen

Neue Werbung 2019

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

  • file_get_contents ist leer

    Hallo,
    Ich versuche, folgenden simplen Code auf Tomcat unter Windows mit XAMPP aufzurufen. Dafür benutze ich als Client Postman und schicke einen POST request.

    http://localhost/dbj/backend/registe...di&price=50000

    Die Funktion/Zeile
    PHP-Code:
    $postdata file_get_contents("php://input"); 
    liefrt jedoch immer empty - was ist da falsch?

    PHP-Code:
    <?php

    // Get the posted data.
    $postdata file_get_contents("php://input");

    if (isset(
    $postdata))
    {
        echo 
    "data was NOT null (ok)"// test passed

        
    if (!empty($postdata))
        {
            echo 
    "data filled"// test NOT passed
        
    }
        else
        {
            echo 
    "data NOT filled (nok)"// ... but variable is empty from file_get_contents
        
    }
    }
    else
    {
        echo 
    "data null";
    }

  • #2
    Sich mit den Grundlagen zu beschäftigen kann nur nützlich sein,
    file_get_contents
    Post Daten stehen bei PHP als superglobale Variable als Array zur Verfügung. Siehe https://www.php.net/manual/en/reserv...ables.post.php

    Kommentar


    • #3
      Restricted by allow_url_include
      Signaturrrrrrr

      Kommentar


      • #4
        Zitat von protestix Beitrag anzeigen
        Sich mit den Grundlagen zu beschäftigen kann nur nützlich sein
        Du bist des Teufels Sowas kannst Du doch nicht einfach so sagen.

        bitcoin.de <- Meine Freelancerwährung

        Kommentar


        • #5
          mit php://input sollte man auch an POST rankommen, allerdings nicht, wenn man eine GET url nutzt.

          Kommentar


          • #6
            Habe mich ja als Einsteiger ausgewiesen hier...

            Merkwürdig ist, dass diese Technik/Funktion in vielen Tutorials benutzt wird. Zum Beispiel:

            https://www.techiediaries.com/php-jw...tion-tutorial/

            https://www.codeofaninja.com/2018/09...-tutorial.html

            https://phpenthusiast.com/blog/angul...ttpclient-post

            Ich möchte ein simples REST-API mit DB-Zugriff in PHP machen (später mit JWT sichern) und dieses dann in einem Angular Front-End nutzen. ZU Testzwecken habe ich mit Postman einen POST-Request erzeugt.

            Kommentar


            • #7
              Wenn du einen POST-Request abschicken willst (und die Daten dann über php://input holen willst) musst du die Daten im Postman im Request-Body übermitteln.

              Wenn du, so wie du es wohl gemacht hast, die Daten an die URL anhängst ist es, wie tomBuilder in #5 richtig sagt, ein GET-Request, auch wenn du im Postman POST einstellst.

              Kommentar


              • #8
                Zitat von darkchanter Beitrag anzeigen
                Habe mich ja als Einsteiger ausgewiesen hier...

                Merkwürdig ist, dass diese Technik/Funktion in vielen Tutorials benutzt wird.
                funktiooniert ja auch, ist nur nicht best practise


                Zitat von darkchanter Beitrag anzeigen
                Ich möchte ein simples REST-API mit DB-Zugriff in PHP machen (später mit JWT sichern) und dieses dann in einem Angular Front-End nutzen. ZU Testzwecken habe ich mit Postman einen POST-Request erzeugt.
                nimm doch zum angular testen
                https://github.com/typicode/json-server
                oder eine irgendwie anders geartete fake api.

                die dbzugriffe und die eigne rest api würde ich nicht mit postman oder ähnlichem als hilfstool entwicklen.
                notfalls kann man mit curl daten posten oder per get abfragen

                Kommentar


                • #9
                  hmh..was ist denn dieser Postman für ein blödes Kackprogramm? Mit curl gehts (-X POST -d ...)

                  Interessanterweise meldet das Apache Log aber auch beim Postman-Zugriff einen POST: "POST /dbj/backend/register.php?model=Audi HTTP/1.1" 200 43 "-" "PostmanRuntime/7.15.0"
                  curl: "POST /dbj/backend/register.php HTTP/1.1" 200 33 "-" "curl/7.65.1"

                  Scheinbar werden die Variablen tatsächlich anders übergeben, obwohl ich im Postman "POST" als Methode auswähle.

                  PS: Hintergrund der Übung ist, der (klassische) Web Hoster zwinght mich halt zum LAMP Stack, sprich PHP & MySql. Mittelfristig möchte ich den wechseln (auf unmanaged VPS) und den MEAN-Stack nutzen. PHP ist allerdings stark verbreitet und man kriegt ja schnell mal was Brauchbares hin (ist eh nur meine persönliche experimental Domain)

                  Kommentar


                  • #10
                    Ne, Postman ist kein Kackprogramm, du machst es einfach nicht richtig. Siehe #7.
                    Wenn du etwas an die URL anhängst ist es GET, nicht POST.

                    Kommentar


                    • #11
                      OH, da hab ich mich wohl etwas vorschnell aufgeregt. Mit "raw" als JSON geht's.
                      Cool - vielen Dank allen Beteiligten. Jetzt kann ich weiterwursteln

                      Kommentar


                      • #12
                        Zitat von darkchanter Beitrag anzeigen
                        PS: Hintergrund der Übung ist, der (klassische) Web Hoster zwinght mich halt zum LAMP Stack, sprich PHP & MySql. Mittelfristig möchte ich den wechseln (auf unmanaged VPS) und den MEAN-Stack nutzen. PHP ist allerdings stark verbreitet und man kriegt ja schnell mal was Brauchbares hin (ist eh nur meine persönliche experimental Domain)
                        mir ist noch nicht ganz klar, wieso du mit php anfänfgst um dann node zu nutzen.und auch nicht, wieso du genau da hängenbleiben willst, wo Du später eh nichts hast. Zudem Du ja eh lokal entwikest/ entwickeln kannst.
                        Nutze doch gleich node.js und komme mit den dortigen Sorgen zurecht, als Provider ist da uberspace zu emphelen.

                        Kommentar

                        Lädt...
                        X