Komut satırı Kıvrılmaları kullanarak HTTP POST taklit ve metin dosyasına çıktı ihracat

3 Cevap php

Nasıl bir HTTP POST isteği curl kullanarak ve bir metin dosyasına sonucu yakalayan taklit mi? Zaten dump.php adında bir komut dosyası var:

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

Ben yaparak basit bir test yaptım:

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

ama ben çıktı dosyasına atılmış verileri görmedim. Ben POST dizilerin birinde görünmesini bekliyordum ama boş.

[_POST] => Array
    (
    )

[HTTP_POST_VARS] => Array
    (
    )

3 Cevap

Kullanmak $_GLOBALS yerine gerekir $GLOBALS.

Ayrıca, bunun yerine çıkış tamponlama kullanarak bunu yapabilirsiniz:

$var = print_r($_GLOBALS, true);

Için ikinci bir parametre olarak true sağlanması print_r yazdırarak otomatik sonucu dönmek yerine olacaktır.

Kıvırmak komut satırından onay işaretleri (') sökün:

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

Sadece POST verilerini yakalamak için çalışıyorsanız, o zaman dump.php dosyası için böyle bir şey yapmak.

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

Tüm POST verisi $_POST değişken olarak depolanır. Siz de GET veri gerekiyorsa Ayrıca, $_REQUEST hem de yapacak.