Jak skorygować poniższy błąd

0

Dlaczego to wyświetla ? Jak zmienić kod, aby nie było tego błędu ?
Warning: PHP Startup: Cannot start session when headers already sent in /koszyk.php on line 3
Zawartość koszyka

brak sesji

W poniższym programie koszyk.php:

<?php

session_start();

?>


<!DOCTYPE HTML>

<html>

<head>

<title> Koszyk </title>

<meta http-equiv="Content-Type" content="text/html;
               charset=UTF-8">

</head>

<body>

<p><b> Zawartość koszyka </b></p>

<?php

if (isSet($_SESSION['koszyk'])) {
foreach(unserialize($_SESSION['koszyk']) as $produkt) {

echo "<li>" . $produkt . "</li>";

}

}


else {

echo "brak sesji";

}

?>

<p><a href="http://serwer2051407.home.pl/lista.php">Przejdz do listy produktów</a></p>

</body>

</html> 



4

Dajesz na wyjście coś (choćby spacje / nowe linie) przed nagłówkami.

Zeby poprawic, tzreba znaleźć skąd te białe znaki pochodzą

3

Może też chodzić o https://pl.wikipedia.org/wiki/BOM_(informatyka)
niektóre edytory go sobie doklejają na początku pliku.

0

nie rozumiem....

0

when headers already sent ?

0

Generalnie zacznijmy od tego, co on widzi jako nagłówki ?

0

zupełnie nie jarzę

0

@adamon: Zmartwię Cię, http://serwer2051407.home.pl/lista.php tutaj masz ten sam błąd.

3

PHP stara się wysyłać odpowiedz do użytkownika na bieżąco w trakcie działania skryptu (wiem, uproszczenie).
Jeżeli trafi na coś co uzna za treść odpowiedzi to wysyła nagłówki i tą treść. I jeżeli w tym momencie skrypt będzie chciał te nagłówki zmodyfikować to otrzymasz błąd (jak wyżej).
Dlatego w linii 3 funkcja operująca na nagłówkach ma problem. Coś już zostało wysłane.
Winne mogą być:

  • jakiś niewidoczny znak na początku pliku (podpowiedz @AnyKtokolwiek)
  • plik może być wywołany przez inny plik który już coś wysłał
  • nieodpowiedni format pliku (podpowiedz @Freja Draco )
  • coś w ustawieniach serwera.

Nie widać tego i ciężko powiedzieć "na oko" co to jest.

Czytaj, eksperymentuj, staraj się zrozumieć a nie tylko wkleić gotowca.

1

Najprościej mówiąc, przed:

<?php

session_start();

Nie mogą pojawić się żadne znaki, ani w tym pliku, ani ew w żadnym innym, który ten plik includuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1