Maison > développement back-end > Problème PHP > Quelle est la différence entre php://input et $_post ?

Quelle est la différence entre php://input et $_post ?

青灯夜游
Libérer: 2023-02-28 20:22:01
original
2576 Les gens l'ont consulté

Quelle est la différence entre php://input et $_post ? L’article suivant vous le présentera. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Quelle est la différence entre php://input et $_post ?

Quelques phrases extraites du manuel :

  1. Quand requête HTTP POST Quand contenu -Type est application/x-www-form-urlencoded ou multipart/form-data, les variables seront passées dans le script actuel sous la forme d'un tableau associatif.

  2. php://input est un flux en lecture seule qui donne accès aux données brutes demandées. Lorsque enctype="multipart/form-data" est utilisé, php://input n'est pas valide.

Vérifiez :

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>
Copier après la connexion

getpost.php

<?php
    echo "----------input--------<br />";
    var_dump(file_get_contents(&#39;php://input&#39;, &#39;r&#39;));
    echo "----------post---------<br />";
    var_dump($_POST);
?>
Copier après la connexion

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

Corps de la requête :

Content-Type: application/x-www-form-urlencoded
Content-Length: 25name=saisai&submit=submit
Copier après la connexion

Sortie :

----------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)
Copier après la connexion

Résumé : Lorsque enctype="application/x- www -form-urlencoded", les données (name=saisai&submit=submit) dans le corps de la requête sont converties en un tableau associatif et placées dans $_POST, tandis que php://input obtient les données originales (données brutes).

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

2.1 Formulaire :

    <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>
Copier après la connexion

Sujet de la demande :

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--
Copier après la connexion

Sortie :

----------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)
Copier après la connexion
Copier après la connexion

Résumé : Lorsque enctype="multipart/form-data" et qu'il n'y a pas de contrôle de fichier de téléchargement, $_POST peut imprimer les données normalement, mais php:// n'est pas valide.

Formulaire 2.2 (ajouter un téléchargement de fichier) :

<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>
Copier après la connexion

Sujet de la demande :

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--
Copier après la connexion

Sortie :

----------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)
Copier après la connexion
Copier après la connexion

Résumé : In enctype="multipart/form -data" et il existe un contrôle de fichier de téléchargement, $_POST peut imprimer les données entrantes, mais exclut tout contenu téléchargé. php:// n'est pas valide.

3. enctype="text/plain"

Formulaire :

<form action="getpost.php" method="post" enctype="text/plain">
        <input type="text" name="name" value="saisai">
        
        <input type="submit" name="submit" value="submit">
</form>
Copier après la connexion

Corps de la requête :

Content-Type: text/plain
Content-Length: 28
name=saisai
submit=submit
Copier après la connexion

Sortie :

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

string &#39;name=saisai

submit=submit

&#39; (length=28)

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

array (size=0)
  empty
Copier après la connexion

Résumé : lorsque enctype="text/plain", il n'y a pas de contenu dans $_POST, et il est stocké dans des paires clé-valeur dans php://input.

Résumé :

  1. Lorsque le Content-Type de la requête HTTP POST est application/x-www-form-urlencoded ou multipart/form -data : php://input contient les données originales similaires à a=1&b=2. $_POST contient un tableau associatif et ne télécharge pas le contenu du contrôle.

  2. php://input est un flux en lecture seule qui donne accès aux données brutes demandées. Lorsque enctype="multipart/form-data" est utilisé, php://input n'est pas valide.

  3. $_POST ne peut pas obtenir les données de publication lorsque Content-Type = "text/plain", mais php://input le peut.

Pour plus de connaissances connexes, veuillez faire attention au Site Web PHP chinois ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal