Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z setcookie
Forum PHP.pl > Forum > Przedszkole
adam882
Witam!

Posiadam stronę z dostępem dla zarejestrowanych użytkowników. Na stronie generowana jest funkcja panel_uzytkownika();

Ma ona taki fragment:
  1. /Panel użytkownika - START
  2. function panel_uzytkownika()
  3. {
  4. ...
  5.  
  6. //Dodatkowe zabezpieczenie (użytkownik może być jednocześnie zalogowany tylko na jednej przeglądarce)
  7. //$r22['przegladarka'] - aktualny md5 nazwy przeglądarki, $md5_przegladarki - md5 nazwy przeglądarki pobierany z sesji
  8. if($r22['przegladarka'] != $md5_przegladarki)
  9. {
  10. setcookie ('uzytkownik', '', time()-10,"/");
  11. setcookie ('zapamietaj', '', time()-10,"/");
  12. setcookie ('przegladarka', '', time()-10,"/");
  13. header('Location: '.URL.'');die();
  14. }
  15. //
  16. ...
  17. }
  18. //Panel użytkownika - STOP


i gdy loguję się na dwóch przeglądarkach - najpierw na jednej a potem na drugiej , z tej pierwszej powinienem zostać całkowicie wylogowany. Tak się niestety nie dzieje, gdyż ciasteczka cookies nie są usuwane. W innym przypadku, gdy usuwałęm ciasteczka też przy użyciu setcookie() , ale tym razem nie wewnątrz funkcji, to wszystko było ok. Czyżby setcookie() nie działało wewnątrz funkcji ? W jaki sposób mogę usunąć ciasteczka ?
kpt_lucek
Cytat(adam882 @ 23.10.2014, 23:11:36 ) *
Witam!

Posiadam stronę z dostępem dla zarejestrowanych użytkowników. Na stronie generowana jest funkcja panel_uzytkownika();

Ma ona taki fragment:
  1. /Panel użytkownika - START
  2. function panel_uzytkownika()
  3. {
  4. ...
  5.  
  6. //Dodatkowe zabezpieczenie (użytkownik może być jednocześnie zalogowany tylko na jednej przeglądarce)
  7. //$r22['przegladarka'] - aktualny md5 nazwy przeglądarki, $md5_przegladarki - md5 nazwy przeglądarki pobierany z sesji
  8. if($r22['przegladarka'] != $md5_przegladarki)
  9. {
  10. setcookie ('uzytkownik', '', time()-10,"/");
  11. setcookie ('zapamietaj', '', time()-10,"/");
  12. setcookie ('przegladarka', '', time()-10,"/");
  13. header('Location: '.URL.'');die();
  14. }
  15. //
  16. ...
  17. }
  18. //Panel użytkownika - STOP


i gdy loguję się na dwóch przeglądarkach - najpierw na jednej a potem na drugiej , z tej pierwszej powinienem zostać całkowicie wylogowany. Tak się niestety nie dzieje, gdyż ciasteczka cookies nie są usuwane. W innym przypadku, gdy usuwałęm ciasteczka też przy użyciu setcookie() , ale tym razem nie wewnątrz funkcji, to wszystko było ok. Czyżby setcookie() nie działało wewnątrz funkcji ? W jaki sposób mogę usunąć ciasteczka ?


A można prosić o kod całej funkcji?
Bo obecnie wygląda na przynajmniej to że zmienna $md5_przegladarki nie jest zdefiniowana wewnątrz funkcji, ani nie jest to obiekt.

Pozdrawiam
adam882
Trochę długa jest ta funkcja i raczej gdybym ją wkleiłw całości to niewiele by to pomogło.

Funkcję panel_uzytkownika(); mam zdefiniowaną w pliku "funkcje.php" , która jest includowana w głównym pliku mojej strony "index.php"

Przykładowo mam taką zawartość pliku "funkcje.php"
  1. <?php
  2. panel_uzytkownika()
  3. {
  4. setcookie ('uzytkownik', '', time()-10,"/");
  5. setcookie ('zapamietaj', '', time()-10,"/");
  6. setcookie ('przegladarka', '', time()-10,"/");
  7. }
  8. ?>

i powyższe rozwiązanie nie działa

natomiast gdy dam np. tak:
  1. <?php
  2. setcookie ('uzytkownik', '', time()-10,"/");
  3. setcookie ('zapamietaj', '', time()-10,"/");
  4. setcookie ('przegladarka', '', time()-10,"/");
  5.  
  6. panel_uzytkownika()
  7. {
  8.  
  9. }
  10. ?>

to działa

tak jakby setcookie() nie było obsługiwane wewnątrz wywoływanej funkcji sad.gif

Namęczyłem się trochę, a okazało się, że funkcja była wywoływana wewnątrz html bez ob_start(); ob_end_flush(); . Dodałęm i działa
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.