2009-01-19 6 views
3

Comment émuler une requête HTTP POST à ​​l'aide de curl et de capturer le résultat dans un fichier texte? Je l'ai déjà un script appelé dump.php:Émulation de HTTP POST à ​​l'aide de la ligne de commande curl et exportation de la sortie dans le fichier texte

<?php 
    $var = print_r($GLOBALS, true); 
    $fp = fopen('raw-post.txt','w'); 
    fputs($fp,$var); 
    fclose($fp); 
?> 

J'ai fait un test simple en faisant:

curl -d 'echo=hello' http://localhost/dump.php 

mais je n'ai pas vu les données que je jetai dans le fichier de sortie. Je m'attendais à ce qu'il apparaisse dans l'un des tableaux POST mais il est vide.

[_POST] => Array 
    (
    ) 

[HTTP_POST_VARS] => Array 
    (
    ) 
+0

Comme suggéré par Evan, a changé cela _globals $ au lieu de $ GLOBALS et maintenant il n'y a pas de sortie – Francis

+0

enlevé les marques de tiques dans la boucle - option d et maintenant les variables POST sont visibles dans le fichier de sortie. Merci Evan pour l'aide! – Francis

+0

De rien Francis, désolé je ne connaissais pas le problème. ;-) –

Répondre

2

Vous devez utiliser $_GLOBALS plutôt que $GLOBALS.

De plus, vous pouvez le faire au lieu d'utiliser en mémoire tampon de sortie:

$var = print_r($_GLOBALS, true); 

Fournir l'true comme second paramètre à print_r renverra le résultat plutôt que d'imprimer automatiquement.

+0

Modifier à _globals $, mais a pas de sortie – Francis

0

Si vous essayez simplement de capturer des données POST, faites quelque chose comme ceci pour votre fichier dump.php.

<?php 
    $data = print_r($_POST, true); 
    $fp = fopen('raw-post.txt','w'); 
    fwrite($fp, $data); 
    fclose($fp); 
?> 

Toutes les données POST sont stockées dans la variable $_POST. De plus, si vous avez également besoin de données GET, les champs $_REQUEST contiendront les deux.

+0

$ avec Remplacée _globals $ _REQUEST et la sortie est: Tableau ( ) – Francis

+0

$ _globals aurait inclus à la fois des tableaux de _POST et _GET, mais il ne contient rien quand je fais la commande curl ci-dessus. – Francis

1

Supprimer coches (') de la ligne de commande curl:

curl -d hello=world -d test=yes http://localhost/dump.php 
Questions connexes