Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]jedno czy wiele cookies ?
Forum PHP.pl > Forum > PHP
angerthor
Witam,

Mam pytanie jak byście rozwiązali mój problem i które wyjście jest bardziej optymalne. W bazie danych mam kilkanaście ankiet, z której losuję jedną i wyświetlam na stronie głównej. Jeżeli user zagłosuje w ankiecie tworzone jest cookie z id ankiety, które później wykorzystywane jest do sprawdzenia, czy user w konkretnej ankiecie już głosował. Jeżeli tak, to zamiast formularza ankiety wyświetlane są od razu wyniki. I teraz moje pytanie brzmi :
Czy bardziej optymalne jest tworzenie do każdej ankiety nowego cookie, czy trzymanie wszystkich id_ankiety w jednym cookie ?
Quantum
a co się stanie gdy ktoś wyłączy obsługę ciastek w przeglądarce ? moim zdaniem lepiej stworzyć osobną tabelę, coś w stylu users_votes(user_id | poll_id) i później sprawdzać zapytaniem

  1. SELECT count(*) FROM users_votes WHERE user_id=? AND poll_id=?
to tylko przykład. smile.gif
angerthor
jak zablokuje obsługę, to ja mu zablokuję możliwość głosowania =)

A nie chciałbym stosować Twoje rozwiązania bo umożliwiałoby ono głosowanie tylko zarejestrowanym userom, a to nie jest to, co chcę osiągnąć winksmiley.jpg
erix
Cytat
Czy bardziej optymalne jest tworzenie do każdej ankiety nowego cookie, czy trzymanie wszystkich id_ankiety w jednym cookie ?

Jedno ciastko. Im jest ich mniej, tym lepiej.

Cytat
A nie chciałbym stosować Twoje rozwiązania bo umożliwiałoby ono głosowanie tylko zarejestrowanym userom

Poczekaj tylko, aż zaczną Ci nabijać. tongue.gif
Quantum
Cytat
jak zablokuje obsługę, to ja mu zablokuję możliwość głosowania =)


masz na myśli sprawdzenie czy obsługa ciastek jest włączona? a jeśli nie to blokujesz głosowanie.. hmm.. ok, nie wyłączę obsługi ciastek, zagłosuje i je usunę potem odświeżę stronę i mogę głosować jeszcze raz ! tongue.gif

Cytat
A nie chciałbym stosować Twoje rozwiązania bo umożliwiałoby ono głosowanie tylko zarejestrowanym userom, a to nie jest to, co chcę osiągnąć


ok, zatem proponuje stworzyć taką tabele users_votes(user_id, poll_id, ip_addr, timestamp).. ? jeśli nie jest zalogowany

  1. INSERT INTO users_votes(user_id, poll_id, ip_addr, timestamp) VALUES (-1, ?, ?, ?)


dodatkowo, aby umożliwić głosowanie np: w miejsach publicznych gdzie adres ip ten sam ma np: cała kafejka, możesz kasować rekordy w ten sposób
  1. DELETE * FROM users_votes WHERE timestamp<? AND user_id=-1
za "?" przyjmiesz time()-3600 - godzina. dla anonimowych użytkowników przypisałem przykładowe "-1" aby nie było konfliktu z zarejestrowanymi.
angerthor
@sniffer

okey, sprawdzasz mnie po adresie ip, głosuję, ale później łącze się przez proxy i mogę głosować jeszcze raz ! =)

Co oznacza, że jeżeli ktoś miałby silną potrzebę nabijania, to ani ciasteczka ani ip mu w tym nie przeszkodzą winksmiley.jpg

Quantum
To proste, że tak naprawdę jeśli by chciał to by mu się udało, bo mogą głosować anonimy. Jeśli już koniecznie chcesz zostać przy tych ciastkach to jedno w zupełności wystarczy.. ale większość stron udostępnia głosowanie tylko dla zarejestrowanych użytkowników, więc przemyśl to jeszcze, oni z tym problemu nie mają haha.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.