Flux d'entrée et de sortie

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 564 fois - Téléchargée 32 fois

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

Ajouter un commentaire

Commentaires

cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
si par exemple je veux récupérer ce qu'un programme (.exe sous win) écrit dans une console, je fais comment?

càd que je voudrais pvr écrire des applis en C++ très spécifiques, auxquelles j'envoie des paramètres via php et qui me renvoient des infos (calculées dans le programme).

ça fait une sorte de CGI, mais avec la souplesse de php et puis je dois pas écrire mon programme comme un CGI, n'importe quelle appli C++ console que j'ai déjà fait l'affaire.
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
c'est bon, trouvé ;)
y a un tas de fct: exec, passthru, `commande`, shell_exec, system... chacun sa façon!

par contre j'en n'ai pas trouvée qui permettait d'envoyer des infos au programme qd il en demande (je vuex dire écrire sur son flux std d'entrée, ce qu'on récupère par cin en C++ ou scanf en Cà)
slyderkiller
Messages postés
146
Date d'inscription
lundi 28 avril 2003
Statut
Membre
Dernière intervention
16 février 2012
-
Bonjour
est pour récuperer des variables d'un applet java pour les utiliser ensuite vers php c'est possible?

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.