Heim > Backend-Entwicklung > PHP-Problem > Was ist der Unterschied zwischen php://input und $_post?

Was ist der Unterschied zwischen php://input und $_post?

青灯夜游
Freigeben: 2023-02-28 20:22:01
Original
2620 Leute haben es durchsucht

Was ist der Unterschied zwischen php://input und $_post? Der folgende Artikel stellt es Ihnen vor. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Was ist der Unterschied zwischen php://input und $_post?

Ein paar Sätze aus dem Handbuch:

  1. Bei HTTP-POST-Anfrage Wenn Inhalt -Typ ist application/x-www-form-urlencoded oder multipart/form-data, die Variablen werden in Form eines assoziativen Arrays an das aktuelle Skript übergeben.

  2. php://input ist ein schreibgeschützter Stream, der Zugriff auf die angeforderten Rohdaten bietet. Wenn enctype="multipart/form-data" verwendet wird, ist php://input ungültig.

Überprüfen:

post.html

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <form action="getpost.php" method="post">
        <input type="text" name="name" value="saisai">
        <input type="submit" name="submit" value="submit">
    </form>
</body>
</html>
Nach dem Login kopieren

getpost.php

<?php
    echo "----------input--------<br />";
    var_dump(file_get_contents(&#39;php://input&#39;, &#39;r&#39;));
    echo "----------post---------<br />";
    var_dump($_POST);
?>
Nach dem Login kopieren

1. enctype = "application/x-www-form-urlencoded"

Anfragetext:

Content-Type: application/x-www-form-urlencoded
Content-Length: 25name=saisai&submit=submit
Nach dem Login kopieren

Ausgabe:

----------input--------

string &#39;name=saisai&submit=submit&#39; (length=25)

----------post---------

array (size=2)
  &#39;name&#39; => string &#39;saisai&#39; (length=6)
  &#39;submit&#39; => string &#39;submit&#39; (length=6)
Nach dem Login kopieren

Zusammenfassung: Wenn enctype="application/x- www -form-urlencoded“ werden die Daten (name=saisai&submit=submit) im Anfragetext in ein assoziatives Array konvertiert und in $_POST abgelegt, während php://input die Originaldaten (Rohdaten) erhält.

2. Wenn enctype="multipart/form-data"

2.1 Formular:

    <form action="getpost.php" method="post" enctype="multipart/form-data">
        <input type="text" name="name" value="saisai">
        <input type="submit" name="submit" value="submit">
    </form>
Nach dem Login kopieren

Anfragebetreff:

Content-Type: multipart/form-data; boundary=---------------------------22554656810024
Content-Length: 249

-----------------------------22554656810024
Content-Disposition: form-data; name="name"

saisai
-----------------------------22554656810024
Content-Disposition: form-data; name="submit"

submit
-----------------------------22554656810024--
Nach dem Login kopieren

Ausgabe:

----------input--------

string &#39;&#39; (length=0)

----------post---------

array (size=2)
  &#39;name&#39; => string &#39;saisai&#39; (length=6)
  &#39;submit&#39; => string &#39;submit&#39; (length=6)
Nach dem Login kopieren
Nach dem Login kopieren

Zusammenfassung: Wenn enctype="multipart/form-data" und keine Upload-Dateisteuerung vorhanden ist, kann $_POST Daten normal drucken, aber php:// ist ungültig.

2.2 Formular (Datei-Upload hinzufügen):

<form action="getpost.php" method="post" enctype="multipart/form-data">
        <input type="text" name="name" value="saisai">
        <input type="submit" name="submit" value="submit">
 </form>
Nach dem Login kopieren

Anfragebetreff:

Content-Type: multipart/form-data; boundary=---------------------------272321281228527
Content-Length: 68386

-----------------------------272321281228527
Content-Disposition: form-data; name="name"

saisai
-----------------------------272321281228527
Content-Disposition: form-data; name="filename"; filename="dog.png"
Content-Type: image/png

                   一堆乱码                    
-----------------------------272321281228527
Content-Disposition: form-data; name="submit"

submit
-----------------------------272321281228527--
Nach dem Login kopieren

Ausgabe:

----------input--------

string &#39;&#39; (length=0)

----------post---------

array (size=2)
  &#39;name&#39; => string &#39;saisai&#39; (length=6)
  &#39;submit&#39; => string &#39;submit&#39; (length=6)
Nach dem Login kopieren
Nach dem Login kopieren

Zusammenfassung: In enctype="multipart/form -data“ und es gibt eine Datei-Upload-Kontrolle, $_POST kann die eingehenden Daten ausdrucken, schließt jedoch alle hochgeladenen Inhalte aus. php:// ist ungültig.

3. enctype="text/plain"

Formular:

<form action="getpost.php" method="post" enctype="text/plain">
        <input type="text" name="name" value="saisai">
        
        <input type="submit" name="submit" value="submit">
</form>
Nach dem Login kopieren

Anfragetext:

Content-Type: text/plain
Content-Length: 28
name=saisai
submit=submit
Nach dem Login kopieren

Ausgabe:

----------input--------

string &#39;name=saisai

submit=submit

&#39; (length=28)

----------post---------

array (size=0)
  empty
Nach dem Login kopieren

Zusammenfassung: Bei enctype="text/plain" gibt es keinen Inhalt in $_POST und er wird in Schlüssel-Wert-Paaren in php://input gespeichert.

Zusammenfassung:

  1. Wenn der Inhaltstyp der HTTP-POST-Anfrage application/x-www-form-urlencoded oder multipart/form ist -data: php://input enthält die Originaldaten ähnlich wie a=1&b=2. $_POST enthält ein assoziatives Array und lädt den Inhalt des Steuerelements nicht hoch.

  2. php://input ist ein schreibgeschützter Stream, der Zugriff auf die angeforderten Rohdaten bietet. Wenn enctype="multipart/form-data" verwendet wird, ist php://input ungültig.

  3. $_POST kann keine Beitragsdaten abrufen, wenn Content-Type = „text/plain“ ist, php://input jedoch schon.

Weitere Informationen zu diesem Thema finden Sie auf der chinesischen PHP-Website! !

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen php://input und $_post?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage