Heim > Artikel > Backend-Entwicklung > Was ist der Unterschied zwischen php://input und $_post?
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.
Ein paar Sätze aus dem Handbuch:
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.
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>
getpost.php
<?php echo "----------input--------<br />"; var_dump(file_get_contents('php://input', 'r')); echo "----------post---------<br />"; var_dump($_POST); ?>
1. enctype = "application/x-www-form-urlencoded"
Anfragetext:
Content-Type: application/x-www-form-urlencoded Content-Length: 25name=saisai&submit=submit
Ausgabe:
----------input-------- string 'name=saisai&submit=submit' (length=25) ----------post--------- array (size=2) 'name' => string 'saisai' (length=6) 'submit' => string 'submit' (length=6)
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>
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--
Ausgabe:
----------input-------- string '' (length=0) ----------post--------- array (size=2) 'name' => string 'saisai' (length=6) 'submit' => string 'submit' (length=6)
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>
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--
Ausgabe:
----------input-------- string '' (length=0) ----------post--------- array (size=2) 'name' => string 'saisai' (length=6) 'submit' => string 'submit' (length=6)
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>
Anfragetext:
Content-Type: text/plain Content-Length: 28 name=saisai submit=submit
Ausgabe:
----------input-------- string 'name=saisai submit=submit ' (length=28) ----------post--------- array (size=0) empty
Zusammenfassung: Bei enctype="text/plain" gibt es keinen Inhalt in $_POST und er wird in Schlüssel-Wert-Paaren in php://input gespeichert.
Zusammenfassung:
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.
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.
$_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!