Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: setcookie() i problem z nagłówkiem
Forum PHP.pl > Forum > PHP
Michael2318
Wiadomo, że setcookie() musi być wysyłane przed jakimikolwiek innymi elementami, które się wyświetlają. Ja mam problem taki, że korzystam z prostego systemu szablonów i kod w każdym pliku wygląda tak:

  1. <?php
  2.  
  3. include('page_header.php'); // includuje sobie nagłówek
  4.  
  5. // jakis tam kod, odpowiadajacy za dana strone
  6.  
  7. include('page_footer.php'); // includuje sobie stopke
  8.  
  9. ?>


I teraz, w przypadku logowania, w miejscu // jakis tam kod, odpowiadajacy za dana strone mam kod, odpowiadajacy za logowanie sie na strone. W tym kodzie mam też autologin, zrobiony po swojemu, który wciska losowy ciag znakow do ciastka i jesli user nie jest zalogowany to sprawdzane jest czy to ciastko u niego istnieje i jesli tak to sprawdzany jest ten losowy ciag znakow. Problem jest tego typu, ze to ciastko sie nigdy nie tworzy bo mam blad:

Cannot modify header information

Wiem czemu tak jest, ale nie wiem jak to sensownie poprawić. Wszystko przez jedną z funkcji szablonu, która odpowiada za wyświetlanie przetworzonego szablonu:

  1. public function display()
  2. {
  3. $tmp = file_get_contents($this->dir.$this->file);
  4. $tmp = str_replace(array_keys($this->tags), array_values($this->tags), $tmp);
  5. $tmp = preg_replace("#\(\.(.*?)\.\)#", "", $tmp);
  6. echo $tmp;
  7. }


przedostatnia linia, tam jest echo.

Jakieś sugestie? Nie bardzo odpowiadałoby mi wyświetlanie tego nagłówka gdzieś w środku kodu php, po setcookie() bo to przysporzy mase warunków dodatkowych, tym bardziej, że te ciastka będę chciał tworzyć w wielu miejscach ;/
mortus
Skorzystaj z możliwości buforowania wyjścia, przyjżyj się dokumentacji ob_start() i ob_end_flush(). Buforowanie wyjścia działa w ten sposób, że podczas przetwarzania skryptu, nagłówki są wysyłane od razu na wyjście, a zawartość przechowywana jest w wewnętrznym buforze. Dopiero użycie odpowiedniej funkcji "wypluwa" kontent na wyjście.
  1. // Twój kod

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.