[session] problem z session_start()

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
czmielu
Posty: 1
Rejestracja: wt gru 12, 2006 2:46 pm
Kontakt:

[session] problem z session_start()

Post autor: czmielu »

WItam! Dlaczego, gdy wywołuje plik "set.php":


[php]<?php
<?
session_start();
ob_start();
$_SESSION["login"] = $login;
$_SESSION["haslo"] = $haslo;
$_SESSION["zalogowany"] = 1;

?>

<html>
<head>
<meta name="generator" content="WebSite PRO 4.3" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title>Zalogowano!</title>
</head>
<body>
<center><br>Logowanie zakończone!</center>
</body>
</html>
?>[/php]


pokazuje się:

Kod: Zaznacz cały

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home.15/b/r/o/brocik/www/plikaj/gfx/ustawienia.php:8) in /home.15/b/r/o/brocik/www/plikaj/logowanie/set.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home.15/b/r/o/brocik/www/plikaj/gfx/ustawienia.php:8) in /home.15/b/r/o/brocik/www/plikaj/logowanie/set.php on line 2


Logowanie zakończone!
Nie wiem już jak headery mogly sie wyslac wczesniej...
VeRmin
Nowy
Nowy
Posty: 21
Rejestracja: ndz gru 10, 2006 1:04 pm

Re: [session] problem z session_start()

Post autor: VeRmin »

Zrób:

[php]
<?php
session_start();

// ..... dalsza cześć kodu
[/php]

Najlepiej jak przez session_start nie będzie żadnych przerw, żadnego html'a. Poza tym masz zduplikowane znaczniki otwierające php :).
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

...

Post autor: 123456 »

Najlepiej jak przez session_start nie będzie żadnych przerw, żadnego html'a
To jest konieczne. Zwróc uwage gdzie masz znacznik otwierajacy PHP. Ostrzezenie wywali sie nawet wtedy, kiedy bedzie jedna pusta linia przed <?php. Buforowanie radzilbym zrobic na samym poczatku i oczywiscie nie zapomniec o jego zakonczeniu.
viraptor
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn cze 28, 2004 12:58 pm
Kontakt:

Re: [session] problem z session_start()

Post autor: viraptor »

Tak jak masz napisane w komunikacie:
Wysłałeś już coś w "gfx/ustawienia.php:8"
Czyli samo "logowanie/set.php" było skądś includowane, albo includowało ten plik. Jeśli wywołujesz set.php, to znaczy, że wklejając tu kod okroiłeś go z kilku include'ów.
kopendrex
Posty: 2
Rejestracja: śr gru 13, 2006 7:18 pm

Re: [session] problem z session_start()

Post autor: kopendrex »

masz dwa razy okreslenie ze uruchamiasz skrypt:

<? oraz <?php pozbadz sie <? a zostaw <?php
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

...

Post autor: 123456 »

masz dwa razy okreslenie ze uruchamiasz skrypt:

<? oraz <?php pozbadz sie <? a zostaw <?php
Przeciez tylko tutaj jest 2x ten znacznik. Kiedy sie uzywa kolorowania skladni to phpBB samo na poczatku dodaje otwieranie skryptu jak widac ponizej.

[php]<?php

?>[/php]

Ktos zapyta: "no i co z tego?". Odpowiadam: czmielu skopiowal po prostu kod z pliku razem ze znacznikami otwierajacymi, przez co widac je podwojnie. Jednak to nie jest powodem bledu jak to niektorzy twierdza.
kopendrex
Posty: 2
Rejestracja: śr gru 13, 2006 7:18 pm

Re: [session] problem z session_start()

Post autor: kopendrex »

Coz w takim przypadku moze to byc wina zapisu kodowania, tj. do wyswietlania uzywa iso-8859-2 jesli ma w swoim edytorze ustawione zapisywanie jakies inne kodowanie moga pojawiac sie na poczatku dziwne znaki podczas wyswietlania co de facto spowduje wyswietlenie znaku zanim zotsana wyslane informacje o sessji.
viraptor
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn cze 28, 2004 12:58 pm
Kontakt:

Re: [session] problem z session_start()

Post autor: viraptor »

kopendrex pisze:na poczatku dziwne znaki
Nie dziwne znaki, tylko BOM z utf-a. A BOM jest pierwszym znakiem, więc nie występuje w 8 linii :evil: Opis błędu przecież wszystko wyjaśnia.
ODPOWIEDZ