escaflowne
23.08.2004, 14:11:31
Pytanie: jak obejść "ograniczenie" php, które wymusza użycie
header("Location: ") przed wysłaniem danych do przeglądarki?
W dokumentcji można przeczytać:
Cytat
Note: As of php 4, you can use output buffering to get around this problem, with the overhead of all of your output to the browser being buffered in the server until you send it. You can do this by calling
manual/en/function.ob-start.php" target="_blank and
manual/en/function.ob-end-flush.php" target="_blank in your script, or setting the output_buffering configuration directive on in your php.ini or server configuration files.
Yarecki
23.08.2004, 14:16:04
Sam sobie odpowiedziałeś. Inny sposób poza podanym przez Ciebie, a zaczerpniętym z dokumentacji, jest użycie szablonów (Smarty).
escaflowne
23.08.2004, 14:30:51
Kumam po angielsku, ale niektórych słów z powyższego cytatu nie rozumiem. Więc zapytam tak: na ile ustawić wartość output_buffering?
Obecnie mam wartość domyślną: 4096 (i nie działa)
Czy zmiana tego parametru może stanowić potencjalną lukę w bezpieczeństwie (myślę, że raczej nie, ale wolę się upewnić)?
FiDO
23.08.2004, 22:37:02
Przede wszystkim to nie jest ograniczenie php, tylko protokolu HTTP.
Po drugie to, ze masz problem z "headers already sent" z reguly swiadczy o zlym zaplanowaniu kodu, wszystko da sie zrobic bez problemu, trzeba tylko chciec i troszke pomyslec.
Po trzecie jak juz naprawde chcesz skorzystac z output buffering to raczej rob to w skrypcie korzystajac z funkcji ob_*, ze wzgledu na to, ze innym serwerze niz Twoj skrypty moga nie dzialac, jak nie bedziesz mial dostepu do konfiguracji, zeby wlaczyc buforowanie.