Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Header("location: ")
Forum PHP.pl > Forum > PHP
escaflowne
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
Sam sobie odpowiedziałeś. Inny sposób poza podanym przez Ciebie, a zaczerpniętym z dokumentacji, jest użycie szablonów (Smarty).
escaflowne
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
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.