Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> canot modify header :/
MitS
post
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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
wipo
post
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.
Go to the top of the page
+Quote Post
MitS
post
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
Go to the top of the page
+Quote Post
yaotzin
post
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

  1. <?php
  2. echo 'witaj świecie';
  3. ?>


zwróci taki warrning

  1. <?php
  2. echo 'witaj świecie';
  3. ?>


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:

  1. <?php
  2. echo 'witaj świecie';
  3. ?>


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
Go to the top of the page
+Quote Post
MitS
post
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 ...
Go to the top of the page
+Quote Post
yaotzin
post
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.
Go to the top of the page
+Quote Post
MitS
post
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 17:36