![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 5 Dołączył: 8.02.2005 Skąd: Olsztyn / Zatorze Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Maaam wielki problem otóż robię pewną stronę od dłuższego czasu no i wszystko było ok aż do dzisiejszego popołudnia. A więc do rzeczy. Na sronie mam panel logowania (w którym ustawiam sessję jeśli dobrze sie zaloguje i mam tam headera), prócz panelu logowania mam też taki przycisk jak wyloguj (po zalogowaniu się). i mój problem polega na tym iż jak się chce zalogować to wywala mi: Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/gimnazjum/tpl/tpl.index.php:116) in /var/www/html/gimnazjum/tpl/tpl.signin.php on line 32 dopiero po odświeżeniu strony lub po zalogowaniu powtórym udaje sie zalogowac poprawnie i to samo dzieje sie przy wylogowywaniu. co nie tak zrobiłem ze te info sie pojawia i jak je wyeliminować (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 856 Pomógł: 19 Dołączył: 30.08.2005 Skąd: 100lica Ostrzeżenie: (0%) ![]() ![]() |
nagłówek header może zostać wysłany tylko jeżeli nic wcześniej nie było wysłane.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 5 Dołączył: 8.02.2005 Skąd: Olsztyn / Zatorze Ostrzeżenie: (0%) ![]() ![]() |
hmmm tyle zdążyłem zrozumieć tylko ze jest taki patent że samego headera wysyłałem tuż po zalogowaniu ... innego nie miałem a jak zakomentowałem go to błąd sie wprawdzie nie pojawia ale działanie serwisu jest takie jak by nadal błąd był .. czyli drugi raz musze sie zalogować by działało ....
a może byc tak że sesje sie gryzą ? czy cos takiego ? Ten post edytował MitS 3.05.2007, 16:19:53 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 0 Dołączył: 12.02.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
pewne funkcje takie jak header czy session_start() muszą zostać wywołane przed wywołaniem czego kolwiek (wyświetleniem czegokolwiek)
a więc
zwróci taki warrning
już nie... problem pojawi się również wówczas gdy wyślesz coś po wczytaniu całej strony gdzie coś zostanie wyswietlone, lub zostaną wysłane nagłówki <head></head> (choć tego nie jestem do końca pewien, ale chyba też ma wpływ ). Jest to założone ze względów bezpieczeństwa. Jeżeli z jakiegoś powodu jednak musisz wywołać funkcje w sposób pokazany na pierwszym listingu to możesz zrobic to tak:
Tylko że to chyba działa tylko w skrypcie w którym zostało wywołane i skryptach do niego zainkludowanych (wiem mieszam trochę (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif) ) a drugi sposób możesz po prostu funkcję ustalającą sesję wywołać w innym pliku w którym nic nie wyświetlasz. Trzecia rzecz możesz włączyć w pliku php.ini output_buffering = on (raczej niezalecane, w sumie ograniczenie dla wysyłania nagłówków zostało własnie poto wprowadzone aby zwiększyć bezpieczeństwo) p.s. Na sam koniec załączam linczek (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) LINCZEK DO FAJNEJ STRONY na temat Cannot Modify Header znalezione w google (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ten post edytował yaotzin 3.05.2007, 16:23:57 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 5 Dołączył: 8.02.2005 Skąd: Olsztyn / Zatorze Ostrzeżenie: (0%) ![]() ![]() |
a mam pytanie...
moge dać: ob_start(); i ob_end_flush(); na początku i konczu całego dokumentu html (chodzi o to że mam system tpli i wszystkie podstrony ładują mi sie do ciała strony) i jak daje te funkcje na początek strony i koniec to wszystko jest ok tylko nie wiem czy czegoś innego mi to nie zniszczy ... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 0 Dołączył: 12.02.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
ta funkcja robi coś takiego
ob_start(); buforuj wyjście ob_end_flush(); czyść bufor wyjściowy i tyle nic ci to nie uszkodzi, z tym że po prostu zmniejszasz bezpieczeństwo swojej strony. z tego co wiem we wczesnym stadium rozwoju PHP nie istniał taki problem z wysyłaniem nagłówków, dopiero chyba od wersji 4 to weszło i jest właśnie poprzez wzgląd na bezpieczeństwo. ale to nie wpływa bezpośrednio na działanie serwisu jako całości (choć zależy z której strony patrzeć). bynajmniej wszystko będzie działać, ale problem masz z bezpieczeństwem :/ ja proponuję wywołać skrypt w innym pliku to jest bardziej co prawda zagmatwane ale na pewno bezpieczniejsze. Przedwczoraj miałem ten sam problem, bo źle zaprojektowałem strony i związany z nimi mechanizm sesji, przeniosłem cały skrypt do logowania do innego pliku gdzie nic nie wyświetlam i wszystko jest git. Pozdr. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 5 Dołączył: 8.02.2005 Skąd: Olsztyn / Zatorze Ostrzeżenie: (0%) ![]() ![]() |
ok dzieki za info (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 17:36 |