Nasıl bir akış filtre yankı eklemek istiyorsun?

2 Cevap php

Yankılandı herhangi bir veri akışı filtreden geçer böylece yankı bir akım filtre eklemek için bir yolu var mı? Benim fikrim XSS karşı korumak için bir çıkış kaçan filtre yazmaktır.

Ben bu hata raporu http://bugs.php.net/bug.php?id=30583 bulundu ama 2004 ve bu artık mümkün olup olmadığını bilmiyordum.

class strtoupper_filter extends php_user_filter 
{
  function filter($in, $out, &$consumed, $closing)
  {
   while ($bucket = stream_bucket_make_writeable($in)) {
     $bucket->data = strtoupper($bucket->data);
     $consumed += $bucket->datalen;
     stream_bucket_append($out, $bucket);
   }
   return PSFS_PASS_ON;
  }
}
stream_filter_register("strtoupper", "strtoupper_filter");

$fp = fopen("php://output", "w");
stream_filter_append($fp, "strtoupper");

echo "echo: testing 123<br>";
print("print: testing 123<br>");
fwrite($fp, "fwrite: testing 123<br>");

2 Cevap

Her zaman sadece filtreyi içeren kendi özel bir 'echo' işlevi yapabilir. Sonra özel fonksiyonu ile kod yankı yılların tüm değiştirin.

<?php
function filtered_echo($data) {
    // filter $data here
    echo $data;
}
?>

Siz herhangi bir filtre işi için çıktı önbellekleme kullanabilirsiniz.

<?php
function my_filter($data) {
    return strtoupper($data);
}
ob_start('my_filter', 4096);
echo 'test';
ob_end_flush(); // Or end of script

Herhangi bir complexer örnek mümkündür.