Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Cannot modify header information - headers already sent by
Forum PHP.pl > Forum > Przedszkole
mizii
Napotkalem na taki problem:

Cannot modify header information - headers already sent by (output started at /plik1.php:73) in /plik2.php on line 23

gdzie plik 1 w 73 linijce ma po prostu

  1. echo '<a href="index.php?id=wgrupie&idgrupy=8&miesiac='.$poprzednimiesiac.'&rok='.$rok2.'"><<</a> '.$miesiac.'-'.$rok.'<a href="index.php?id=wgrupie&idgrupy=8&miesiac='.$nastepnymiesiac.'&rok='.$rok3.'"> >></a>';


jest to przeskakiwanie w kalendarzu miesiac w przod miesiac w tyl, a linijka 23 w pliku2 to po prostu require_once pliku z funkcja do kalendarza.

dodam tylko ze problem wystepuje przy dodaniu wpisu na shoutboxie

  1. if ($ustawieniawgrupie['shoutbox'] == '1')
  2. {
  3. require_once "shoutbox_wgrupie_formularz.php";
  4. require_once "shoutbox_wgrupie.php";
  5. require_once "shoutbox_ogolny_odswiezanie.php";
  6. }


pierwszy plik to najprostszy formularz w htmlu,
plik drugi to dodanie wpisu do bazy i wyswietlenie po nacisnieciu guziku wyslij w formularzu,
plik trzeci to skrypt w js odswiezajacy div z shoutboxem.

jezeli wykomentuje plik1 zawierajacy link napisany wyzej, to problem nie wystepuje.


ktos pokieruje gdzie szukac rozwiazania?

Tomplus
Taki błąd występuje gdy przesyłasz jakiś znak przed nagłówkiem strony.
Może to być tylko odstęp przed <?

a może to być to echo co podałeś powyżej. Musiałbyś podać więcej kodu, szczególnie z początku.

gino
W tym błędzie chodzi o to, że funkcje wysyłające albo modyfikujące nagłówek http muszą być wywoływane przed wykonaniem jakichkolwiek danych wyjściowych.
Do takich funkcji modyfikujących należy m.in. header, setcookie, session_start.Taki błąd może być nieumyślny, czyli to co pisał tomplus, np. białe znak (np. spacja) przed <?php lub po ?>, komunikaty o błędach wynikłe z działania innego pliku itp., oraz zamierzone czyli np. użycie echo czy print. Sprawdź to a znajdziesz swój błąd.

gino
SmokAnalog
Gino, nie musisz się podpisywać pod postem. oneeyedsmiley02.png
mizii
problematyczny okazał sie nagłówek header.
Dziękuje wszystkim za nakierowanie smile.gif do zamknięcia smile.gif
Tomplus
Ale mieliśmy rację tak?
Dałeś header gdzie w kodzie np.

Kod
echo "somethings";
if (condition) {
   header("Location: page");
}
mizii
Cytat(Tomplus @ 30.09.2020, 16:13:30 ) *
Ale mieliśmy rację tak?
Dałeś header gdzie w kodzie np.

Kod
echo "somethings";
if (condition) {
   header("Location: page");
}


przepraszam ze odpisuje po takim czasie ale tak dokladnie tak smile.gif
jakies rady na przyszlosc jak sie wystrzegac takich bledow?
Czasami mi sie zdarzaja ze header wywala mi taki blad i nie specjalnie wtedy wiem jak sobie z nim poradzic...

wydaje mi sie ze w moim przypadku nie sa bledem czyste znaki tylko definiowanie blokow html przed naglowkiem header, chyba nie do konca rozumiem dzialanie tego mechanizmu tongue.gif
predzej czesto robilem formularz w jednym pliku dodanie do bazy oraz formularz.

  1. if(isset($_POST['send']))
  2. {
  3. //funkcja dodawania do bazy
  4. header /naglowek ktory sie krzaczy a ma za zadanie kasowanie zmiennej post aby nie duplikowaly sie inforamcje po odswiezeniu
  5. }
  6. else
  7. {
  8. formularz
  9. }


a jak rozbije to na dwa osobne pliki i w polu action dam przekierowanie do pliku z funkcji warunkowej a nastepnie na jego koncu zrobie header do pliku z formularzem to wszystko dziala i problem nie wystepuje
viking
Poczytaj sobie najpierw podstawy https://prophp.pl/article/1/protokol_http
dublinka
Cytat(mizii @ 12.10.2020, 02:46:55 ) *
przepraszam ze odpisuje po takim czasie ale tak dokladnie tak smile.gif
jakies rady na przyszlosc jak sie wystrzegac takich bledow?
Czasami mi sie zdarzaja ze header wywala mi taki blad i nie specjalnie wtedy wiem jak sobie z nim poradzic...

wydaje mi sie ze w moim przypadku nie sa bledem czyste znaki tylko definiowanie blokow html przed naglowkiem header, chyba nie do konca rozumiem dzialanie tego mechanizmu tongue.gif
predzej czesto robilem formularz w jednym pliku dodanie do bazy oraz formularz.

  1. if(isset($_POST['send']))
  2. {
  3. //funkcja dodawania do bazy
  4. header /naglowek ktory sie krzaczy a ma za zadanie kasowanie zmiennej post aby nie duplikowaly sie inforamcje po odswiezeniu
  5. }
  6. else
  7. {
  8. formularz
  9. }


a jak rozbije to na dwa osobne pliki i w polu action dam przekierowanie do pliku z funkcji warunkowej a nastepnie na jego koncu zrobie header do pliku z formularzem to wszystko dziala i problem nie wystepuje


Nie wiem czy rozumiesz co robi header.
Po co wysylasz cos do przegladarki w Twoim przypadku echo a po tym dajesz header?
Header wysyla do wskazanego odcinka dokumentu lub innego pliku wiec po co cos wyswietlac. Jak juz chcesz cos pokazac i chcesz przekierowane to zrob to w js.
Czyli
Echo "costam";
Tutaj przekierowanie z opoznieniem w js.
Header stosuje sie w miejscacg gdzie cos sie wykona i ma nastapic przejscie ale bez zadnego wyswietlania wczesniej danych czy wyslania czegololwiek do przegladarki
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.