ugrás a tartalomhoz

PHP kimenet: böngésző helyett file-ba

Anonymous · 2006. Május. 18. (Cs), 14.31
Először is bocs, hogy ezért új topic-ot nyitok, de már fél órája keresem a manualban és képtelen vagyok rálelni. Tehát a kérdés, hogy tudom megoldani, hogy a PHP programom kimenete ne a böngészőbe menjen, hanem az a karaktersorozat, amit a böngésző kapna meg, az íródjon ki egy file-ba?
 
1

output buffering

janoszen · 2006. Május. 18. (Cs), 14.49
Hali!

A kód elejére egy ob_start();

a végére egy $valtozo = ob_get_contents(); ob_end_clean(); és a $valtozo tartalmát után a filekezelő függvények segítségével kiírod.
2

konkréten

bbalint · 2006. Május. 19. (P), 11.00
  1. <?php  
  2.  ob_start();  
  3.    
  4.  // itt csinálsz valamit a program  
  5.    
  6.  $tartalom = ob_get_contents(); // eddig kiírt dolgok beírása a változóba  
  7.    
  8.  $fp = fopen('valami.file''wb'); // a 'valami.file' nevű file megnyitásra írásra  
  9.  fwrite($fp$tartalom); // kiírt dolgok file-ba írása  
  10.    
  11.  ob_end_clean(); // kimeneti bufferelés megszüntetése, illetve az eddig kiírt dolgok törlése  
  12. ?>  
  1. <?php  
  2.  /* 
  3.   "rosszabb" megoldás: minden kimenet kiírása egyből a filébe: 
  4.   ez esetben elég a program elejére elhelyezni az aláb kódot 
  5.  */  
  6.    
  7.  function énKicsiKimenetKezelőFüggvényem($kimenet){ // kimenetet kezelő függvényünk; a neve bármilyen függvénynév lehet jól  
  8.   static $fp = null; // a függvény meghívásai között ez a változó megmarad; ebbe lesz beletéve a file mutató...  
  9.     
  10.   if(!$fp// ... ha még nincs filemutató, akkor  
  11.    $fp = fopen('valami.file''wb'); // létrahozzuk  
  12.     
  13.   fwrite($fp$kimenet); // kimenő dolog beírása  
  14.     
  15.   return($kimenet); // visszaadjuk a dolgot a PHP-nak, tényleges kiiratásra; ha ezt a return()-t lehagyod, akkor nem fog kiírni semmit a program  
  16.  }  
  17.    
  18.  ob_start('énKicsiKimenetKezelőFüggvényem'); // kimenet-bufferelés énKicsiKimenetKezelőFüggvényem segítségével  
  19. ?>