Autor | Zpráva | ||
---|---|---|---|
lesiak307 Profil |
#1 · Zasláno: 17. 3. 2010, 20:46:44
Pozdravujem všetkých. S PHP robím len krátko. Mám stránku, ktorú som chcel trošku spestriť anketou a tak som na nete našiel niekoľko už pripravených ankiet, kde stačilo len zmeniť otázku a odpovede. Tak som si vybral jednu, o ktorej som myslel že je pre mňa najlepšia.
Otázka a odpovede sa ukladajú do DB, kontrola hlasovania je pomocou COOKIES. Všetko zo začiatku fungovalo v najlepšom poriadku, až pred pár dnami som si všimol, že odpovede začínajú byť nereálne. To preto, lebo ide o stránku obce a v ankete bola otázka či návštevník pochádza z danej obce. Počet hlasom za ÁNO je už veľmi vysoký... - tak to je prvá vec ktorá nesedí. Preto som sa rozhodol, že anketu zastavím a to takým spôsobom, že odstránim <a href> z hlasovacích odpovedí. No dnes pozerám, že niekto zase hlasoval, čo by už nemalo byť možné. A tu je otázka: vedel by mi niekto povedať, či to mohol spôsobiť najaký robot, alebo ČO??? Ďakujem.... |
||
mckay Profil |
#2 · Zasláno: 17. 3. 2010, 20:50:38
lesiak307:
Pravděpodobně ano. Jestli ten robot maže pravidelně cookies tak si může hlasovat dokola jak se mu zachce - na to se používá rel="nofollow", aby na to boti neklikaly. Ukaž živou ukázku, nepochopil jsem úplně jak si to myslel, že si odstranil <a href> ;). |
||
shaggy Profil |
#3 · Zasláno: 17. 3. 2010, 20:50:43
Nemusí ísť o robota, stačí aby som si vymazal cookies a môžem hlasovať znova.
|
||
lesiak307 Profil |
#4 · Zasláno: 17. 3. 2010, 21:00:07
<div id="anketa"> <?php include 'anketa.php' ?> <div>Pochádzate z Bunkoviec?</div><hr> <a href="anketa.php?hlas=3&back=<?php echo $_SERVER["REQUEST_URI"]; ?>"> Áno<br> <?php showCount("1"); ?><br><hr> <!-- pôvodne bolo toto--> Nie<br> <?php showCount("2"); ?><br><hr> <!-- aby sa nedalo hlasovať, nechal som len toto--> <div>Počet hlasov: <?php echo all(); ?></div> </div> |
||
shaggy Profil |
#5 · Zasláno: 17. 3. 2010, 21:01:31
lesiak307:
A môžeš nám ukázať, ako vyzerá vygenerovaný kód? Konkrétne, aký je výstup funkcie showCount? |
||
lesiak307 Profil |
#6 · Zasláno: 17. 3. 2010, 21:06:01
<?php $refer = $_GET['back']; $cnt_sql = mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS); mysql_select_db($MYSQL_DB, $cnt_sql); if(isset($_GET['hlas'])) { $hlas = urlencode($_GET['hlas']); $cookie = 'anketa'; $query = "SELECT * FROM anketa WHERE hlas = '$hlas'"; $result = mysql_query($query, $cnt_sql); if(!$result) { echo mysql_error(); exit; } if(mysql_num_rows($result) == 0) { $query = "INSERT INTO anketa VALUES('$hlas', 0)"; $result = mysql_query($query, $cnt_sql); } else { if(!isset($_COOKIE[''.$cookie])) { $query = "UPDATE anketa SET anketa = anketa + 1 WHERE hlas = '$hlas'"; $result = mysql_query($query); setcookie($cookie, "ok", time() + 5184000); } } header("Location: ".$refer); } //funkcia na vykreslenie grafu, počtu hlasov a percent function showCount($hlasID) { global $cnt_sql; $query = "SELECT anketa FROM anketa WHERE hlas = '$hlasID'"; $result = mysql_query($query, $cnt_sql); $vse = "SELECT sum(anketa) FROM anketa"; $result1 = mysql_query($vse, $cnt_sql); if(mysql_num_rows($result) == 0) { echo '0(0%)'; } else { $count = mysql_fetch_row($result); $pocet = mysql_fetch_row($result1); $pruh = 110; //dlazka grafu if ($pocet[0] == 0) { echo $count[0]."(0%)"; } else echo '<img src="sloupec'.$hlasID.'.gif" align="middle" height="10" width="'.round($count[0]/$pocet[0]*$pruh, 1).'"> '.$count[0].' ('.round($count[0]/$pocet[0]*100, 1).' %)'; } } //funkcia na vypisanie celkového počtu hlasov function all() { global $cnt_sql; $query = "SELECT sum(anketa) FROM anketa"; $result = mysql_query($query, $cnt_sql); $count = mysql_fetch_row($result); return $count[0]; } ?> |
||
shaggy Profil |
#7 · Zasláno: 17. 3. 2010, 21:09:59
lesiak307:
Si Slovák, takže predpokladám, že jazyková bariéra medzi nami nie je. Preto sa ťa pýtam ešte raz, ako vyzerá kód, ktorý ti php vygeneruje (vieš, to html, čo vidím ja, ty, návštevníci a aj prípadný robot)... aj keď je to viacmenej jedno, stále si myslím, že to môže robiť niekto, kto si z teba robí srandu (vymaže cookies a opäť zahlasuje). Najlepšie by bolo, ak by si dal odkaz na stránku, kde by sme si pozreli počet hlasov (ak ide o navýšenie v desiatkach, tak to určite robí človek) a aj samotný kód. |
||
lesiak307 Profil |
#8 · Zasláno: 17. 3. 2010, 21:13:33
www.bunkovce.sk
navšenie nie je v desiatkach, ale stranka funguje len 2 mesiace a pochybujem, žeby už na ňu chodilo toľko ľudí a žeby z obce pochádzalo 236 ľudí - ktorí by chodili na stránku. Obec má asi 400 ľudí aj s deťmi a starými občanmi... |
||
lesiak307 Profil |
#9 · Zasláno: 17. 3. 2010, 21:27:29
shaggy:
Tak..., prišiel si na niečo? |
||
lesiak307 Profil |
#10 · Zasláno: 17. 3. 2010, 21:47:29
Alebo inač sa opýtam. Ako by som mohol upraviť tuto anketu aby nebola kontrolovaná COOKIES, ale iným spôsobom...? Vlastne celý script už vidíte... Ďakujem za rady.
|
||
Chazzy Profil * |
#11 · Zasláno: 18. 3. 2010, 06:00:19
Kontrolovat IP adresu
|
||
mckay Profil |
#12 · Zasláno: 18. 3. 2010, 06:02:21
shaggy:
„Nemusí ísť o robota, stačí aby som si vymazal cookies a môžem hlasovať znova.“ A komu by se chtělo stále si mazat cookies a přidávat nereálné počty hlasů? Buď to bude nějaké malé dítě, které se nudí, tak maže cookies a myslí si, jak strašně ten web hackuje, a nebo to bude bot (dle mého). |
||
lesiak307 Profil |
#13 · Zasláno: 18. 3. 2010, 12:57:08
[#12] mckay:
Kurňa, ale najviac ma na tom štve to, že už by sa nemalo dať hlasovať, ale zase niekto hlasoval!!! Včera bolo za ÁNO odhlasované 236 krát a dnes je už 257 x !!!! [#11] Chazzy: Asi to budem musieť spraviť cez IP. No problém je v tom, že ide o stránku obce. No a v tej obci je jeden poskytovateľ siete - wifi. Málo kto ma iné pripojenie (asi nikto). Nie som si istý, ale asi budu mať rovnakú IP. |
||
mattyZEM Profil |
#14 · Zasláno: 18. 3. 2010, 13:40:01
lesiak307:
„Nie som si istý, ale asi budu mať rovnakú IP.“ U hlasů si loguj IP adresu a hnedka zjistíš... |
||
lesiak307 Profil |
#15 · Zasláno: 18. 3. 2010, 15:12:01
Ďakujem za rady... idem na to
|
||
mckay Profil |
#16 · Zasláno: 18. 3. 2010, 17:48:43
lesiak307:
Mimochodem, úplně jsem to nepochopil - nechtěl jsi v předminulém příspěvku místo obce napsat vesnice? Nebo na slovensku obec == vesnice? :) Pokud všichni mají stejnou IP, tak řešení pravděpodobně nebude ;) |
||
panther Profil |
#17 · Zasláno: 18. 3. 2010, 18:08:17 · Upravil/a: panther
<mimo-téma>
mckay: „nechtěl jsi v předminulém příspěvku místo obce napsat vesnice?“ je k tomu nějaký důvod? Jen podle počtu obyvatel raději nesuď (i tak je to obec, vzhledem k tomu, že má s největší pravděpodobností „obecní úřad“). Například Přebuz je také město, přestože má pár desítek obyvatel. </mimo-téma> |
||
lesiak307 Profil |
#18 · Zasláno: 18. 3. 2010, 18:51:33
Tak ma napadlo, a je to aj vďaka vaším úvahám a radám... asi to spravím tak, že nechám tie cookies, ale len pre svoju vedomosť do databázy si budem ukladať IP adresy hlasujúcich. Tak by som mal mať aspoň nejaký ten prehľad....
[#16] mckay: No jasne že obec == vesnice ... |
||
lesiak307 Profil |
#19 · Zasláno: 18. 3. 2010, 22:46:18
Ďakujem Vám všetkým za rady, veľmi ste mi pomohli!
|
||
Časová prodleva: 2 měsíce
|
|||
lesiak307 Profil |
#20 · Zasláno: 14. 5. 2010, 22:50:39
Len pre informáciu ako to dopadlo... V PHP som vytvoril aplikáciu, ktorá presne sleduje každý jeden hlas a zistil som, že to robil robot spider53.yandex.ru a googlebot - ****** :)
|
||
Časová prodleva: 15 let
|
0