Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] headers i cookies
Forum PHP.pl > Forum > Przedszkole
zakaru
Witam,
mam taki oto problem:
Próbuje wysłać cookies za pomocą funkcji setcookie, ale oczywiście wyskoczyć musi błąd ;]
oto kod w php jaki napisałem:

  1. <?php
  2.  
  3.  
  4. if(!isset($_COOKIE['USTAWIENIA'])){
  5. $ustawienia="cos tam cos tam";
  6. setcookie("USTAWIENIA", $ustawienia, time()+120960000000, "/");
  7. $_COOKIE['USTAWIENIA']=$ustawienia;
  8. }
  9.  
  10. ?>


i teraz pojawia mi się taki oto błąd:

Kod
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /index.php:1) in /index.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /index.php:1) in /index.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /index.php:1) in /index.php on line 9


z tego co zrozumiałem to php nie może wysłać cookies bo są już wysłane nagłówki... tylko najdziwniejsze jest to, że nic nie wysyłam przed cookies'em (no chyba, że się mylę), mógłby ktoś pomóc?
webasek
Miałem kiedyś podobny błąd załatwiłem to w ten sposób, że po pierwsze zlikwidowanie pustego miejsca (wszystkich pustych) przed setcookies i session_start powinno pomóc
chemik1982
http://pl2.php.net/manual/pl/function.ob-start.php
Pozdrawiam
zakaru
Cytat(chemik1982 @ 25.07.2008, 10:06:35 ) *


nie rzutuje.
czy ob_start jest na poczatku kodu czy tez na koncu pojawia sie identyczny blad jak powyzej.
chemik1982
a dodaj na koncu skryptu:
  1. <?php
  2. ?>



http://forum.php.pl/index.php?showtopic=27...mp;#entry160450
zakaru
ciągle lipa... niby gdzieś na początku jest coś wysyłane...

dodam, ze skrypt dziala na serwerach superhost.pl i moim lokalnym apachu, ale na home.pl nie trybi
chemik1982
sprawdz czy gdzies ci sie jakas spacja nie zapodziala winksmiley.jpg przed wyslaniem.
A najlepiej napisz do home.pl byc moze katalog musi sie jakos specjalnie nazywac.
Gdzies kiedys czytalem ze tmp.
Dodaj jeszcze:
  1. <?php
  2. ini_set( 'session.save_path', 'tmp/' );
  3. ?>
Zmorcia
Kod
session_start();


Musi się znajdowac zaraz po <?php

KOD:
Kod
<?php
session_start();
session_save_path("sesje/");
ob_start();

if(!isset($_COOKIE['USTAWIENIA'])){
$ustawienia="cos tam cos tam";
setcookie("USTAWIENIA", $ustawienia, time()+120960000000, "/");
$_COOKIE['USTAWIENIA']=$ustawienia;
}

?>

Pozdro tongue.gif
zakaru
Cytat(chemik1982 @ 25.07.2008, 11:04:22 ) *
sprawdz czy gdzies ci sie jakas spacja nie zapodziala winksmiley.jpg przed wyslaniem.
A najlepiej napisz do home.pl byc moze katalog musi sie jakos specjalnie nazywac.
Gdzies kiedys czytalem ze tmp.
Dodaj jeszcze:
  1. <?php
  2. ini_set( 'session.save_path', 'tmp/' );
  3. ?>


katalog do sesji moze sie obojetnie jak nazywac.
pozatym dalem:
  1. <?php
  2. session_save_path("session/");
  3. ?>

i z tego co widze to sesje sie tam zapisuja.

no sprawa jest jak dla mnie bardzo dziwna. Przeciez nic do przegladarki przed tym kodem nie jest wysylane...
Zmorcia
Ja już dałem rozwiązanie działające, musi być odrazu po

Kod
<?php
session_start();
?>


PzodrooooO!!!
Shili
W jakim kodowaniu kodujesz ten skrypt? Jeśli to utf, to stawiam na znak BOM (Byte Order Mark). Zaopatrz się wtedy w edytor który to cudo potrafi usunąć (na przykład Notepad++)
darth_sidious
Nie wiem, czy to Ci pomoze, ale korzystajac z uslug home.pl zauwazylem, ze aby sesje dzialaly poprawnie w katalogu w ktorym wykonywany jest (znajduje sie) plik/skrypt musi znajdowac sie katalog /tmp.
Mialem podobne problemy i tworzenie tego katalogu rozwiazywalo problem..

Tak wiec utworz ten katalog w miejscu gdzie masz skrypt i sprawdz... i oczywiscie to co pisali koledzy wyzej - wszystko musi zaczynac sie zaraz po <?php

Pozdrawiam
Paweł
zakaru
no i mam juz rozwiazanie.

Cytat(Zmorcia @ 25.07.2008, 11:24:58 ) *
Ja już dałem rozwiązanie działające, musi być odrazu po

Kod
<?php
session_start();
?>


PzodrooooO!!!


no niestety przykro mi, ale nie tutaj lezal blad winksmiley.jpg



Cytat(Shili @ 25.07.2008, 12:09:25 ) *
W jakim kodowaniu kodujesz ten skrypt? Jeśli to utf, to stawiam na znak BOM (Byte Order Mark). Zaopatrz się wtedy w edytor który to cudo potrafi usunąć (na przykład Notepad++)


a o to z kolei dokladnie chodzilo. 3 poczatkowe bajty (czyli BOM) byly najpierw wysylane do przegladarki. Wystarczylo ustawic kodowanie na utf bez BOM winksmiley.jpg
Dzieki Tobie wielkie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.