konto usunięte

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

Witam!

Jestem nowy na tej stronie wiec witam wszystkich :)

Z gory zaznaczam ze jesli jestes cwaniaczkiem i odsylasz mnie do google albo do manuala to prosze nie udzielaj sie!

Jestem poczatkujacym programista php i poszukuje latwych, bezpiecznych i prostych spozobow.

Szukalem na googlach, przegladalem manuale i inne fora, sa pewne tematy/pojecia ktorych jeszcze nie rozumiem. Pomyslalem ze moze ktos kto juz ma jakas praktyke i moze cos doradzi. Problem mam z wyslaniem ciasteczka. Probuje zrobic swoj wlasny mechanizm sesji (jako sama sesja "gola" dzial dobrze) ale ciacho szwankuje. Bawilem sie na osobnym pliku "golym" gdzie tylko bylo wysylanie cisteczka i sprawdzanie to dzialalo ale problemem okazuje sie troche zawartosci kodu HTML.

Funkcja setcookie jest przykladowo uzyta dla testow:

setcookie('testuje', '50', 0); (nazwa, wartosc, czas)

podczas wysylania ciasteczka mam komunikat: "Warning: Cannot modify header information - headers already sent by (output started at sciezka/menu.php:13) in sciezka/login.php on line 71"

plik menu.php z wersem 13 zawiera:
(wczesniej znajduje sie wszystko do html-a, kodowanie znaczniki poczatkowe oraz rozpoczenie pliku php i sesji ale bledu nie ma, jest zgodne z W3C)

</head>
<body>
<div class="maintable">'; - wers 13

jak nie zalacze pliku menu.php ktory ma poczatek strony z HTML to w pliku login.php bedzie przypadac na pierwsza linijke ktora zawiera kod HTML w echo '';

Przetlumaczajac komunikat na translatorku to informuje mnie o naglowku, czytalem o slynnym problemie UTF-8 i BOM, jestem pewien ze na 99,99% nie ma BOM, skrypty strony pisze na wirtualnej maszunie z Linuksem (debian). Nie mam pojecia co moze byc problemem.

P.S.

Bede wdzieczny o nie komentowanie braku polskich znakow!Marcin Pysiek edytował(a) ten post dnia 29.11.10 o godzinie 18:36
Jakub L.

Jakub L. Programista

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

Streszczając google i dokumentację: nie możesz mieć żadnej treści przed wysłaniem jakiegokolwiek headera HTTP.
Cookie jest wysyłane w headerze.

Odeślij się do rfcków HTTP w celu poczytania o headerach i Cookie w celu poczytania o ciasteczkach.
Tomasz Zadora

Tomasz Zadora programuję

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

W skrócie: nie możesz wysłać cookie do użytkownika ani żadnego innego nagłówka HTTP (nagłówek = header) jeżeli wysłałeś już jakąkolwiek treść HTML do użytkownika.

Dlatego musisz wysłać cookie ZANIM do przeglądarki użytkownika cokolwiek wyjdzie - mam tu na myśli nie tylko HTML, ale np. przypadkowe spacje na początku pliku skryptu etc.

Poczytaj o protokole HTTP i komunikacji klient-serwer.

Dobrze jest też nauczyć się angielskiego przynajmniej w biernej formie, to ułatwia programowanie.
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

Marcin Pysiek:
Witam!

Jestem nowy na tej stronie wiec witam wszystkich :)

Z gory zaznaczam ze jesli jestes cwaniaczkiem i odsylasz mnie do google albo do manuala to prosze nie udzielaj sie!

Jestem poczatkujacym programista php i poszukuje latwych, bezpiecznych i prostych spozobow.

Szukalem na googlach, przegladalem manuale i inne fora, sa pewne tematy/pojecia ktorych jeszcze nie rozumiem. Pomyslalem ze moze ktos kto juz ma jakas praktyke i moze cos doradzi. Problem mam z wyslaniem ciasteczka. Probuje zrobic swoj wlasny mechanizm sesji (jako sama sesja "gola" dzial dobrze) ale ciacho szwankuje. Bawilem sie na osobnym pliku "golym" gdzie tylko bylo wysylanie cisteczka i sprawdzanie to dzialalo ale problemem okazuje sie troche zawartosci kodu HTML.

Funkcja setcookie jest przykladowo uzyta dla testow:

setcookie('testuje', '50', 0); (nazwa, wartosc, czas)

podczas wysylania ciasteczka mam komunikat: "Warning: Cannot modify header information - headers already sent by (output started at sciezka/menu.php:13) in sciezka/login.php on line 71"

plik menu.php z wersem 13 zawiera:
(wczesniej znajduje sie wszystko do html-a, kodowanie znaczniki poczatkowe oraz rozpoczenie pliku php i sesji ale bledu nie ma, jest zgodne z W3C)

</head>
<body>
<div class="maintable">'; - wers 13

jak nie zalacze pliku menu.php ktory ma poczatek strony z HTML to w pliku login.php bedzie przypadac na pierwsza linijke ktora zawiera kod HTML w echo '';

Przetlumaczajac komunikat na translatorku to informuje mnie o naglowku, czytalem o slynnym problemie UTF-8 i BOM, jestem pewien ze na 99,99% nie ma BOM, skrypty strony pisze na wirtualnej maszunie z Linuksem (debian). Nie mam pojecia co moze byc problemem.

P.S.

Bede wdzieczny o nie komentowanie braku polskich znakow!Marcin Pysiek edytował(a) ten post dnia 29.11.10 o godzinie 18:36
Sprawdź ustawienie output_buffering w twoim pliku php.ini - http://www.php.net/manual/en/outcontrol.configuration..... Ogólnie problem wiążę się z tym, że ciasteczko jako takie wysyłane jest w nagłówku. Natomiast nagłówek musi być wysłany przed wszystkimi danymi pozostałymi. A więc jeżeli masz jakieś "echo" przed wysłaniem nagłówków to jest ten błąd. Dlatego używa się buforowania wyjścia by obejść ten problem. Dyrektywa o której wcześniej napisałem włącza buforowanie wyjścia tak, że nie powinno już być tego problemu. Alternatywnie możesz skorzystać z funkcji ob_start - http://pl.php.net/manual/en/function.ob-start.php wywołując ją w linii przed wystąpieniem błędu aby manualnie włączyć buforowanie i funkcji ob_end_flush - http://pl.php.net/manual/en/function.ob-end-flush.php na końcu skryptu by wysłać zawartość bufora do przeglądarki.

Co do polskich znaków, to na tym forum przyjęte jest, że się ich używa. Jak również dba o ortografię. Także wielka prośba do Ciebie. Jeżeli chcesz, żeby ludzie Cię tutaj szanowali i odpowiadali na twoje posty z chęcią, to stosuj się do tych zasad ;)

konto usunięte

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

Przepraszam za brak polskich znakow (diaktrycznych) ale przyzwyczajenie i dziekuje za zrozumienie :) od kilku dni siedze na windowsie :P

Super, dziekuje za odpowiedzi, juz troche mnie nakierowalo co napisaliscie, teraz bedzie mi latwiej szukac na googlach :)

Rozumiem zeby zrobic plik np: session.php ktory bedzie kontrolowac sesja i ciasteczkami oraz w przypadku niepowodzenia bedzie wylogowywac lub banowac ip jesli ktos na sile bedzie chcial przejac sesje lub wykonac atak :)

pozdrawiam

konto usunięte

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

"Z gory zaznaczam ze jesli jestes cwaniaczkiem i odsylasz mnie do google albo do manuala..."

Dziwne podejscie, zwlaszcza ze problem z headerem, jest podstawa wiedzy o cookiesach i tak naprawde manual jest pierwszym zrodlem gdzie sie szuka odpowiedzi. Google tez wie na ten temat calkiem sporo. Wiec nie jestem pewien co do tego "cwaniaczkowania" ;)

konto usunięte

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

No spoko, ale nie kazdy jest programista php, sa na tym swiecie ludzie ktorzy ucza sie dopiero podstaw i nie wszystko jest dla nich jasne wiec szukaja jasnego i prostego jak drut opisu badz odpowiedzi aby zalapac slownictwo oraz kod php, wiele for przegladalem i dla programisty jest rzecz oczywista i swieta wiec odsyla standardowo tam gdzie powinien szukac. W ksiazce z ktorej sie ucze sa tylko przyklady a nie ma zadnych praktycznych przykladow jak wykorzystac ze strona html itp dlatego sie chcialem zapytac ludzi ktorzy siedza w tym dlugo wiec trzeba sobie jakos pomagac, jedni chca gotowy skrypt php inni chca aby ich chociaz nakierowac aby ulatwic szukanie. Ja nie szukam gotowca tylko chce sam sie nauczyc i zalapac o co w te klocki chodzi, czasami nakierowanie na jakis trop duuuuzooo pomaga i szukanie w googlach czy w manualu jest duzo latwiejsze.

bede wdzieczny o nie pisanie postow nie tamet lub posty zwiazane z tematem, nie zasmiecajmy i ulatwmy szukanie informacji innym osobom ktore tez napewno potrzebowac beda pomocy.

------

po odpisaniu na moj post powyzej, ludki ktorzy znaja sie na php nakierowali mnie aby zrobic cos na zasadzie znanego w polsce duzego portalu aukcyjnego (nie bede spamowac, kazdy zna), po wypelnieniu formularza logowanie przekieruje na biala strone gdzie nie wysyla zadnego kodu html, tylko informacje ze za chwile zostanie przekierowany na strone glowna i w tym pliku dokonam zainicjowania sesji oraz ciasteczek :)Marcin Pysiek edytował(a) ten post dnia 29.11.10 o godzinie 21:08

konto usunięte

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

Marcin Pysiek:
Przepraszam za brak polskich znakow (diaktrycznych) ale przyzwyczajenie i dziekuje za zrozumienie :) od kilku dni siedze na windowsie :P

od kiedy to na Linux-ie polskie znaki nie działają?

konto usunięte

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

Na Linuksie polskie znaki dzialaja (w zaleznosci od kodowania) czesto zamiast polskich znakow wystepuje kwadracik w nim 4 symbole, oczywiscie mozna to ustawic ale nie kazdy patrzy na ten szczegol jesli mu to do niczego nie jest potrzebne. Ustawialem kodowanie w programach do filmow aby ogladac filmy z napisami ale teraz nie widze potrzeby do pisania stron w php czy html bo wystarczy ustawienie apache2 oraz kodowanie html.

konto usunięte

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

Marcin Pysiek:
...
Z gory zaznaczam ze jesli jestes cwaniaczkiem i odsylasz mnie do google albo do manuala to prosze nie udzielaj sie!

Naucz się korzystać z manuala (też z Google) a nie będziesz zadawał pytań zmuszając innych do ciągłego odpowiadania na te same pytania.

Dodatkowo proszę - nie zaśmiecaj GL.

Cwaniaczek.

[edyta]
Wcale nie pisałem byś usuwał swoje konto ;)Robert B. edytował(a) ten post dnia 29.11.10 o godzinie 21:26
Jakub L.

Jakub L. Programista

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

No i wydmuszka dostała co chciałą i znikła.

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

Jakub L.:
No i wydmuszka dostała co chciałą i znikła.

Za jakiś czas pojawi się znowu, z kolejnym problemem. Zakład?
Adam Pawliczek

Adam Pawliczek Usability expert, UX
designer,
Interaction
specialist

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

Andrzej K.:
Jakub L.:
No i wydmuszka dostała co chciałą i znikła.
Za jakiś czas pojawi się znowu, z kolejnym problemem. Zakład?
Ale z nowym profilem... Tak właśnie szczeniactwo robi z internetu jeden wielki śmietnik.
Dawid Rokita

Dawid Rokita CTO picAds.pl

Temat: cookie - ostrzeżenie o wcześniejszym wysłanym nagłówku

Plik odpowiadający za obsługę sesji powinien być jednym z pierwszych albo też tym pierwszym.

Zawsze możesz użyć funkcji: bool headers_sent ([ string &$file [, int &$line ]]), ale ona tylko daje true jeżeli zostały wysłane nagłówki - tak co by błędami nie waliło :-)

Następna dyskusja:

curl - ustawienie cookie




Wyślij zaproszenie do