Autor | Zpráva | ||
---|---|---|---|
dolfi Profil * |
#1 · Zasláno: 21. 1. 2006, 12:50:53
Potřeboval bych poradit. Mám anketu v PHP s kontrolou opakovaného hlasování přes cookie. Anketa se vkládá přes administrační systém. Potřeboval bych, aby se při nahrazení původní ankety novou anketou vložila nová cookie nebo aby se původní smazala - prostě aby šlo znovu hlasovat. Samozřejmě není problém tu cookie v kódu přepsat na jinou ručně, ale jde mi o ten administrační systém. Díky za odpověď.
|
||
WertriK Profil * |
#2 · Zasláno: 21. 1. 2006, 13:36:32
Tento problem jsem resil taky ted jak jsem si pripomel tento problem tak me napadlo rekl bych 99% reseni , ale musi mit uzivatel zaple cookies.
V cookies ktera se odesle po hlasovani bude IP uzivatele a ta stejna IP se ulozi do souboru nebo do databaze. Na zacatku scriptu se zjisti hodnota cookies (modem eliminujem - pokud si nesmaze cookies) a dostanem IP ktere mel uzivatel kdyz hlasoval a pokud tu IP najdem v souboru tak je jasne ze hlasoval ... Pro kontrolu bych udelal aby se v tom souboru hledalo i nynejsi IP uzivatele, pro pripad kdyby se cookies neodeslalo nebo si ho uzivatel smazal...az se naobedvam hned si to tak udelam. |
||
WertriK Profil * |
#3 · Zasláno: 21. 1. 2006, 13:53:30
Jsem zapomel napsat ze jekmile se tam anketa zmeni tak se musi vymazat vsechny uloze IP. A pokud bude cookies obsahovat nejakou IP co neni ulozena tak je jasne ze hlasoval v nektere z predeslich anketach coz povede k ulozeni aktualni IP do cookies a do DB (souboru) pri novem hlasovani ... jdu si to predelat ....
|
||
Oswald Profil |
#4 · Zasláno: 21. 1. 2006, 14:07:55
Potřeboval bych, aby se při nahrazení původní ankety novou anketou vložila nová cookie nebo aby se původní smazala - prostě aby šlo znovu hlasovat.
Já tohle řeším tak, že po hlasování pošlu cookie jako pole, kde klíč je idéčko ankety: setcookie('voted[' . $pollId . ']', 1, [...]) A před uložením hlasu kontroluju, jestli v $_COOKIE['voted'] neexistuje prvek s klíčem stejným, jako je id ankety, pro kterou je hlas určen. |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0