• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Warning: Cannot modify header information - headers already sent by...

Object Storage Arubacloud
+2 głosów
9,951 wizyt
pytanie zadane 15 czerwca 2015 w PHP przez emwu Użytkownik (540 p.)
zamknięte 15 czerwca 2015 przez emwu

Cześć.

Robię pewien projekt. Oczywiście robiłem go na lokalnym serwerze (XAMP). Tam wszystko śmiga. Przeniosłem bazę i całą stronę na serwer docelowy. Niestety, na (prawie) wszystkich stronach, które wykorzystują przekierowanie w php (header ('Location: adres.php');) skrypt wywala następujący błąd:

Warning: Cannot modify header information - headers already sent by (output started at /podstrona/dodaj.php:29) in /podstrona/dodaj.php on line 41

W internecie znalazłem rozwiązanie polegające na dodaniu funkcji ob_start(); do skryptu. Pomogło to jednak tylko w przypadku systemu logowania. Nie mam pojęcia dlaczego.

Ma ktoś jakiś pomysł?

komentarz zamknięcia: Problem rozwiązany

2 odpowiedzi

+6 głosów
odpowiedź 15 czerwca 2015 przez Comandeer Guru (601,110 p.)
wybrane 15 czerwca 2015 przez emwu
 
Najlepsza

Na localu pewnie działa, bo PHP ma włączony output buffering i wszystko z automatu leci przez bufor - zatem błąd nie występuje.

ob_start to ręczne wymuszenie tego bufora i musi się znaleźć bezwzględnie na początku pliku PHP. Inna rzecz, że to w zasadzie hack. Nie byłby on potrzebny gdybyśmy się trzymali zasady podziału aplikacji. Każda aplikacja webowa jest jak cebula (czy tam ogr): ma warstwy. Jedną z warstw jest logika, inną - prezentacja. Jeśli wszystkie szablony wywali się do osobnych plików i będzie wyświetlać tylko wtedy, gdy trzeba o tego typu błędach można po prostu zapomnieć. Wówczas bowiem PHP najpierw przemieli wszystkie warunki i przekieruje gdzie trzeba, a dopiero później się zajmie wyświetlaniem czegokolwiek jeśli jest to potrzebne.

Zatem najlepsze rozwiązanie to oddzielenie logiki aplikacji od prezentacji, czyli inaczej: skorzystanie z systemu szablonôw - https://pornel.net/szablony Tego typu rzecz jest dodatkowo genialnym wstępem do poznania wzorca MVC, wciąż będącego najpopularniejszym wśród aplikacji webowych.

komentarz 15 czerwca 2015 przez CzlowiekSkrypt Nałogowiec (26,340 p.)
Pięknie wyjaśnione szefie !
komentarz 15 czerwca 2015 przez emwu Użytkownik (540 p.)
edycja 15 czerwca 2015 przez emwu
Dziękuję za piękne wyjaśnienie! :)
0 głosów
odpowiedź 15 czerwca 2015 przez draghan VIP (106,230 p.)
edycja 15 czerwca 2015 przez draghan

Ja mam pomysł. ;) Pokażesz kod pliku dodaj.php? Zobaczymy, co tam narozrabiałeś. ;)

Szybki research w google mówi, że tak się dzieje kiedy już wysłaliśmy jakieś dane do przeglądarki (np. funkcją echo()) i próbujemy później wysłać nagłówek - co oczywiście spali na panewce, bo nagłówek już został wysłany.

Tutaj masz link, gdzie zostało to bardzo dokładnie opisane (patrz na najlepszą odpowiedź):
http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php

Podobne pytania

0 głosów
2 odpowiedzi 1,939 wizyt
0 głosów
3 odpowiedzi 484 wizyt
pytanie zadane 7 lipca 2015 w HTML i CSS przez mowmiheniek Stary wyjadacz (11,900 p.)
0 głosów
0 odpowiedzi 147 wizyt
pytanie zadane 20 listopada 2017 w PHP przez Piotr Jarema Użytkownik (970 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...