Flux d'entrée et de sortie

Contenu du snippet

Qui n'a jamais eu besoin de récupérer dans un script PHP des données envoyées par une application tierce ?
Perso j'ai eu le problème pour récupérer du texte d'une applet Java d'édition de texte.

Quel est le problème ?
En fait, l'application fournit le texte en vrac. Or, $_POST retourne un tableau... Donc tout caractère &, # et autres vont venir compliquer la récupération.
Le gros problème est qu'on ne peut pas modifier l'application à la source des données.

La solution est de récupérer telle quelle la requête web envoyée au script PHP.
Voila comment faire, très simplement, avec une fonction usuelle mais que peu de monde sait utiliser d'une manière plus approfondie :

Source / Exemple :


file("php://input")

Conclusion :


Pour les newbies, cette fonction retourne un tableau. Pour afficher le texte complet :

echo join("", file("php://input"));

Cet exemple fini, je me permets de vous citer la doc PHP qui sera plus efficace qu'un long discours :

---------------------
Flôts d'entrée/sortie
---------------------
PHP 3.0.13 et plus récent, php://output et php://input depuis PHP 4.3

php://stdin

php://stdout

php://stderr

php://output

php://input

php://stdin, php://stdout et php://stderr donne accès au flux correspondant d'entrée ou de sortie du processus PHP.

php://output vous permet d'écrire dans le buffer de sortie, de la même manière que print() et echo().

php://input permet de lire des données POST bruts. C'est moins gourmand en mémoire que $HTTP_RAW_POST_DATA et il n'y a pas de directive spéciale dans php.ini.

php://stdin et php://input sont lecture seule, tandis que php://stdout, php://stderr et php://output sont en écriture seule.

php://filter est une sorte de méta-gestionnaire, prévu pour qui permet l'utilisation de filtre avec les données d'entrée au moment du démarrage du script. C'est pratique avec des fonctions compactes comme readfile(), file() et file_get_contents() où il n'y a pas d'opportunité d'appliquer un filtre aux données lues.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.