Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] 'dopisywanie' do cookies
Forum PHP.pl > Forum > Przedszkole
Narus
Witam winksmiley.jpg

Rozbudowałem swoją stronkę o głosowanie podobne jak na stronie demotywatory.pl czy bash.org.pl
Aby uniknąć nabijania głosów 'zabezpieczyłem' się sesjami i cookies.

Jeśli dana osoba nie głosowała na oceniany przedmiot to ustawiam sesje i cookies:

  1. if(!isset($_SESSION['glos'.$dobre]))
  2. {
  3. $_SESSION['glos'.$dobre] = "ok";
  4. }
  5.  
  6. if(!isset($_COOKIE['glosik'.$dobre]))
  7. {
  8. $kiedykoniec = time() + (60 * 60 * 24 * 14);
  9. setCookie("glosik".$dobre, "ok",$kiedykoniec);
  10. }


Wszystko pięknie działa. Jednak jako perfekcjonista nie chciałbym aby było tak jak teraz. A teraz dzieje się tak, że powstają cookies:
glosik1
glosik562
glosik53
...
glosik2131231

o wartosci "ok".

Chciałbym aby były jedne cookies, tj. np. o nazwie glosik i w niej wartosci 1:562:53:2131231 (lub inny seperator).
I teraz mam dwa pytania:
1. Jak to zrobic? Czy muszę przed kazdym dopisaniem kolejnego id przedmiotu pobierac wartosc cookies 'glosik', dopisac np. :34 i dopiero zapisac jako nowe cookies?
2. Jak to wtedy odczytac, gdy chcę sprawdzić czy głosowano na dany przedmiot?
Bo teraz robię:
  1. if(($_SESSION['glos'.$dobre]=="ok") || ($_COOKIE['glosiki'.$dobre]=="ok")) { ...} else { ...}


Pozdrawiam i dziękuje za odpowiedzi smile.gif
Fishu
Nie lepiej zapisywać sesje do np. mysql ? (przykładowo ip i tam byś trzymał głosowanie)
1. Niestety tak
2. explode(), odczytujesz to za pomocą przykładowo pętli while. Wystarczy jedno cookie, jednak ja bym trzymał się zapisywania sesji (użytkownik może zmodyfikować wartość ciasteczka lub je po prostu wyrzucić).
Narus
Myślałem nad mysql, ale w sumie to moja pierwsza styczność z sesjami i cookies i zależało mi na tym sposobie.
Do tego przy np. IP to 'po dupie' dostają użytkownicy sieci lokalnych. Ale najprawdopodobniej kiedyś przejdę właśnię na tę metodą, tym bardziej, że kiedyś zamierzam rozbudować serwis o rejestracje użytkowników (wtedy głosowanie dla zarejestrowanych i zamiast IP to login).

Ale na razie chciałbym się skupić na cookies + sesje winksmiley.jpg

1. Tak właśnie myślałem, ale w sumie to chwila roboty
2. Hmm, również właśnie myślałem nad rozwiązaniem z pętlą, np:

  1. $danyglos = explode(":", $glosiki);
  2.  
  3. $i=0;
  4. while($danyglos[.$i.]!=$dobre) { //da radę tak w ogole?
  5. i++;
  6. }
  7. // jak wtedy rozwiazac ten warunek, tak o: if(($_SESSION['glos'.$dobre]=="ok") || ($danyglos[.$i.]==$dobre)) { glosowales} else { dodanieglosu} ?


i załóżmy, że użytkownik zagłosuje na 1000przedmiotów - wtedy teoretycznie pętla może zrobić 1000 obrotów, nie za dużo?
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.