Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z Cookie.
Forum PHP.pl > Forum > PHP
br-design.pl
Witam, pisze klase dla obsługi systemu ocenia na AJAXie, utknołem w jednym miejscu, z cookie, które sprawdza czy ktoś już głosował.

  1. <?php
  2. if($_COOKIE['glosowal_'.$model_name.'_'.$id] == true) {
  3. echo 'glosowal'; 
  4. } else {
  5.  
  6. // tutaj dodaje nowa ocene do bazy...
  7.  
  8. setcookie('glosowal_'.$model_name.'_'.$id, true, time()+60*60*24*15, null, 'strona.manga.pl'); // ustawiam cookie na 15 dni.
  9.  
  10. echo round($nowa_ocena, 1);
  11. }
  12. ?>


I tutaj jeszcze wszystko działa dobrze, cookie się ustawia odpowiednio ale kiedy chce potem sprawdzić czy ktoś już głosował (np. po to aby można było odrazu wyświetlać wyniki na stronach na których użytkownik już głosował) to cookie wydaje się wogole być nie ustawione.

  1. <?php
  2. if(($this->_allwaysShowRating == true) or ($_COOKIE['glosowal_'.$model_name.'_'.$id] == true)) {
  3. $code .= $rating;
  4. } else {
  5. $code .= 'Zagłosuj aby zobaczyć!';
  6. }
  7. ?>


Pomocy! Dzięki z góry.
thornag
To tak. Zamisat glosowal_+model_name mozesz uzyc tablicy cookie.
  1. <?php
  2. setcookie ("cookie[three]", "cookiethree");
  3. setcookie ("cookie[two]", "cookietwo");
  4. setcookie ("cookie[one]", "cookieone");
  5. if (isset ($cookie)) {
  6.  while (list ($name, $value) = each ($cookie)) {
  7.  echo "$name == $value&lt;br>n";
  8.  }
  9. }
  10. ?>


W skrypcie odczytujacym cookie daj
  1. <?php
  2. echo "<pre>";
  3. print_r($_COOKIE);
  4. ?>


Pamietaj ze cookie sa widoczne dopiero po przeladowaniu strony, niestety nie wiem jak to dziala z AJAXem ale mysle ze bez przeladowania nie da rady.

Sprobuj wiec w AJAXie ustawic zmienna ktora bedzie blokowala mozliwosc glosowania dwukrotnie w tym samym przeladowaniu a po przeladowaniu to juz sie cookie tym zajmnie.
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.