Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z cookie
Forum PHP.pl > Forum > PHP
sigal2006
napisałem sobie taki kod dla cookie

  1. <?php
  2. $nazwaciacha = "testtwojemiasto";
  3. $wygasniecie = time() + (60 * 60 * 24 * 100);
  4. setCookie($nazwaciacha,$miasto_adres,$wygasniecie);
  5. ?>


wartość ciacha jest includowana z innego pliku

  1. $miasto_adres ="szczecin";


zmienna adresu wyświetla się dobrze ale coś nie tworzy ciasteczka

prosze o pomoc
thek
Pytanie... Co jest w tym innym pliku? Pamiętaj, że ustawienie cookies musi być zanim cokolwiek zostanie do przegladarki wysłane. nawet jeden głupi znak nie może się pojawić. Włącz więc wyświetlanie błędów, bo może sie okazać, że masz wysyp "Headers already sent" i innymi słowy bajzel wink.gif
sigal2006
Plik z którego dane są includowane wyglądają tak

  1. $wojewodztwo_index = 'Zachodniopomorskie'; //nazwa
  2. $wojewodztwo = 'zachodniopomorskie'; // adres folderu
  3. $miasto = 'szczecin'; // nazwa



nadaj problem występuje
cycofiasz
Pamiętaj o tym co napisał Thek. Kod wygląda na poprawny więc powinien działać.
sigal2006
Sprawdziłem wszystko po prostu nie generuje sad.gif wywaliłem includowanie całość uruchamiam z niezależnego pliku nie chce po prostu zapisywać ciasteczka
thek
A zrób
  1. <?php
  2. include_once( ścieżka_do_pliku );
  3. $nazwaciacha = "testtwojemiasto";
  4. $wygasniecie = time() + (60 * 60 * 24 * 100);
  5. setCookie( $nazwaciacha, $miasto_adres, $wygasniecie );
  6. var_dump( $_COOKIE );
  7. ?>
i napisz co w wyniku, bo teoretycznie tylko $nazwaciacha jako 1 parametr jest wymagany, a reszta jest opcjonalna i nawet gdyby $miasto_adres było błędne, to powinno się utworzyć puste ciasteczko.
sigal2006
w wyniku wywala

  1. array(2) { ["__utma"]=> string(55) "119326361.1573327739.1310630378.1310630378.1310630378.1" ["__utmz"]=> string(70) "119326361.1310630378.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)" }
cycofiasz
  1. <?php
  2. if(!isset($_COOKIE['ciacho']))
  3. {
  4. $result = setcookie( 'ciacho', 'smaczne', time() + 3600);
  5. echo date('d-m-Y H:i') . '<br/>';
  6. var_dump( $result );
  7. }
  8. else echo $_COOKIE['ciacho'];
  9. ?>


Odpal dwukrotnie taki testowy kod i podaj to co się wyświetliło w przeglądarce za każdym odpaleniem
sigal2006
wyświetliło się

  1. 14-07-2011 16:20
  2. bool(false)


a ciasteczka i tak nie tworzy sad.gif
cycofiasz
To jeszcze odpal to i tu wklej rezultat:

  1. <?php
  2.  
  3. ini_set('display_errors', TRUE);
  4.  
  5. $hs = headers_sent();
  6. $result = setcookie( 'ciacho', 'smaczne', time() + 3600);
  7. var_dump($result, $hs );
  8.  
  9. ?>
sigal2006
  1. Warning: Cannot modify header information - headers already sent by (output started at /home/ogloszenia/ogloszenia/zapisz_lokacje.php:1) in /home/ogloszenia/ogloszenia/zapisz_lokacje.php on line 7
  2. bool(false) bool(true)
cycofiasz
Czyli to co napisał thek na początku...

http://phpedia.pl/wiki/Cannot_add_header_i...rs_already_sent
sigal2006
właśnie nie bo otwieram to w czystym dokumencie bez include bez html sama funkcja do ciasteczka i też nie tworzy
cycofiasz
Przykład 3 też nie wchodzi w grę? Próbowałeś innego edytora? A może Twój hosting dodaje coś od siebie na początku pliku? Na pewno jest coś na początku pliku bo "output started at /home/ogloszenia/ogloszenia/zapisz_lokacje.php:1"
sigal2006
Raczej nie wina serwera bo na tym samym hostingu tylko na innym skrypcie działają mi cookie sad.gif oki jeżeli nikt nie wiem dlaczego sam będę walczyć może coś wykombinuje. Ale i tak dzięki za pomoc
cycofiasz
A co z przykładem nr 3 że się tak ponownie spytam?
Nie chodzi o to że nikt nie wie tylko o to że nie przykładasz się zbytnio do rozwiązania problemu. Wrzuć ten testowy plik na jakiś hosting plików i daj do niego link.
thek
A może gdzieś w includowanym pliku lub głównym masz spacje lub entery jakieś (często userzy o tym nawet nie wiedzą) lub pliki są zapisane jako utf8 z BOM, a to też powoduje ów problem. Dlatego zwróć uwagę na to czy przed <?php coś Ci się do pliku nie "wbija" ze znaków pustych.
Naprawdę często widziałem kod w stylu:
  1.  
  2.  
  3. <?php
  4. //tu kod
i potem lamenty, że coś nie tak jest...

A jak sam widzisz, przed <?php jakiś artysta zapomniał entery wykasować i stąd potem problem. Naprawdę trzeba uważać pisząc.
sigal2006
Dzięki kolego działa jesteś boss !
thek
Nie boss tylko praktyk. Za dużo rzeczy widziałem, po których inni by się z budzili z krzykiem na ustach biggrin.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.