Autor Zpráva
PetrCi
Profil
Zdravím, mohl by mi někdo poradit, prosím, jak mohu v této anketě:

http://zavodnicentrala.cz/anketa/pokus.php

zabezpečit aby každý hlasoval z jednoho počítače jen jednou? Nechci si ukládat do databáze plno IP adres, zatím jsem to měl uděláno pomocí cookies, ale bohužel v IE může clovek hlasovat kolikrát chce (v Chrome, FF ani v Opere tato chyba neni a cookies funguji správně a jde to pouze jednou...) - tak mě napadlo jedině řešení pomocí JS ... pomohl by mi někdo šikovný, jak na to, prosím? ...v JS se neorientuju .. děkuji!

- btw:..... ani CSS to ******* IE nepodporuje jako ty ostatni tri prohlizece...
PetrCi
Profil
no tak ted to zas vypada, ze to funguje...
PetrCi
Profil
no takto.. v tom, co jsem poslal to funguje i v IE, ale kdyz to vlozim zde:

http://undercover.nfsgame.net/novinky/tuning-tydne-1-hlasovani

tak tam lze hlasovat porád.. poradi mi nekdo, prosííím? :(

EDIT: omlouvam se za nevyuziti tlacitka pro upravu prispevku... snad to uz muzu nechat být ;)
TomášK
Profil
Nedokážeš zabránit tomu, aby někdo hlasoval víckrát, určitě se to už mnohokrát řešilo, zkus hledat. Na co narazíš?
* cookies lze vypnout (to provede uživatel v prohlížeči, ty s tím nemůžeš nic dělat)
* ip adresu lze změnit (i kdybys jí ukládal) pomocí proxy serverů, na druhou stranu víc uživatelů může mít stejnou IP adresu
* vytvoření registrace (jméno - heslo) nebo ověření emailu. Kdokoliv založit víc účtů. Navíc je to nepohodlné pro uživatele a nejsložitější na implementaci

V praxi se (pokud vím, bez záruky) používá IP adresa.
PetrCi
Profil
1) jak to řeší blueboard, tuší někdo?...

2) jde mi o to, že mi cookies fungují ve všech prohlížečích při použítí anketky jako iframe .. ale v IE jako iframe nefunguje (v IE8 final)..

máte někdo k tomuto řešení, prosím?
Anonymní
Profil *
1, Blueboard FAQ: Zabepečení je provedeno pomocí cookies a IP adres.
2, Nevím, IE8 nemám. Zkus sem hodit kód, který vytváří ty cookies, ať to někdo jiný může vyzkoušet.

Pokud to uděláš jen na bázi cookies, dokáže to každý jen trochu poučený uživatel triviálně obejít - zamezíš akorát tomu, že nikdo (s povolenými cookies, což na druhou stranu většinou bývá) nebude hlasovat dvakrát omylem. Lepší než nic, pár uživatelů to odfiltruje. Ale stačí jeden člověk (nebo robot) a znehodnotí celou anketu.
S roboty možná budeš mít problémy - pokud nebudou umět cookies, můžou ti hlasovat jak chtějí. Možná by stačilo nahradit GET za POST, mám za to, že na POST aspoň ti slušní roboti nelezou.
PetrCi
Profil
nechci jinou ochranu, jen chci, aby sly cokies i na IE? protoze tam mouzou klikat kolikrat chteji .. a to se mi nelibi ... - jinak jak jsem psal, kdyz to je tak, jak to vidite ten pokus.php, tak to v IE8, jak rikam, jede ok, jen jednou ... ale kdyz totez dam do iframu v IE8 .. tak pak to nejde... a netusim jak tomu zabranit...

btw: posilali jste tady nekdo pokusne nejake hlasy do te ankety na te strankce nfsgame.net ??? .. pokud ano, reknete mi to prosim, at to neni neder hlasovani ...
TomášK
Profil
když jsem to zkoušel poslal jsem tam cca 5-10 náhodných hlasů - nepamatuju si na co - z Firefoxu.
PetrCi
Profil
tomášk: máš zakázané cookies? ... nic jiného me nenapadá ...

jinak jsem to vyřešil teda tak, že to je v novém okně a je to ... - jine reseni me ted bohuzel nenapadlo :(
PetrCi
Profil
když jsem to zkoušel poslal jsem tam cca 5-10 náhodných hlasů - nepamatuju si na co - z Firefoxu.
mmnt.. zkousel jsi to, prosim, na te pokusne ankete? .. pokus.php ??? ... protoze pokud ne ... tak to neni dobre :(
TomášK
Profil
jj, v té pokusné. Cookies jsem měl zakázané.
Lister88
Profil *
Děkuji za odpověď, ale absolutně mi není jasné, jaktože vám jde klikat kolikrát chcete... - v te pokusne si klikejte kolikrat chcete...
klidne vam tu dam ten kod:

//Overime zda uz nehlasoval v teto ankete, kdyz ano, presmerujeme zpet
if ($HTTP_COOKIE_VARS['OVRS'.$aid.'Voted'])
{
Header("Location:anketa_bez_grafy.php?aid=".$aid."");
Exit;
}

//Pokud nehlasoval, ulozime hlas do databaze a pote presmerujeme zpet
$sql = "UPDATE `anketa` SET `pocet` = `pocet`+'1' WHERE id='$id'";
if(Mysql_Query($sql))
{
//Nastavime cookie, pro overovani, zda uz bylo hlasovano
SetCookie('OVRS'.$aid.'Voted', '1', time()+(7*24*60*60));
Header("Location:anketa_bez_grafu.php?aid=".$aid."");
Exit;
}
else
{
//Vypise chybu kdyz nastane
echo Mysql_Error();
}
?>
PetrCi
Profil
no .. to bez_grafy na bez_grafu jsem upravil... ale porad to dela neplechu .. vytvoril jsem kvuli tomu clanek .. tak porovnejte... zde: http://undercover.nfsgame.net/novinky/anketa a zde http://zavodnicentrala.cz/anketa/anketa_bez_grafu.php?aid=2 ... je to prakticky totéž, s tím rozdílem, že v tom článku v iframu to nefunguje, ale samostatne o funguje... kde muze byt chyba (vim, ze v IE, ale kde ? :( ) ??
peta
Profil
Mne osobne PHP kod ve foru o JS prilis nezajima
Pokud ti nepomuze jakpsatweb.cz - javascript - priklady, pak muzes zkusit
http://www.volny.cz/peter.mlich/jpw/#skriptiky
Mne tam cookies funguji, pokud vim.

Pokud nekdo bude chtit hlasovat moc, tak vi, ze ma vypnout javascript, existuje na to rozsireni s jednim tlacitkem. Vi, ze ma vypnout cookies. A vi, ze ma zkusit vice prohlizecu. Takze bez IP ho neodlisi.

kdyz nekdo hlasi problem s prohlizeci, je dobre vypsat vsechny zkousene verze. IE8 se chova rozdilne nez IE7 a IE6

Kdyz neco nefunguje, ve FF chybova konzola hlasi pri pouziti chyby, jake?
Lister88
Profil *
ve FF zadna chyba nebyla ... asi jsem te nedjak nepochopil...

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: