Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uniemozliwienie wielokrotnego glosowania
Forum PHP.pl > Forum > Gotowe rozwiązania
Bojakki
Myslalem, nad systemem, ktory w 100% zapobieglby masowemu falszowaniu wynikow jakiegos glosowania na mojej sronie, same odnotowanie tego w cookiesach nie wystraczy. Wymyslilem cos takiego:

Cytat
W momencie glosowania sprawdza czy odwiedzajacy jest zalogowany (logowanie oparte na sesji phpbb)

- jesli tak
  - sprawdza w bazie czy glosujacy juz oddal glos na ten obiekt
      - jesli nie, glos jest zaliczany, a w bazie jest zapisywane na jaki obiekt glosowal i jaka ocene wystawil, a takze dokladna date oddania glosu (co do minuty)
      - jesli tak, to glos nie jest zaliczany


- jesli nie
  - sprawdza w cookiesach czy glosujacy oddal juz glos na ten obiekt
      - jesli nie to sprawdza czy obiekt byl w ciagu ostatnich 15 minut oceniony wiecej niz 2 razy (przez kogokolwiek)
        - jesli wiecej niz 2 razy nie zalicza glosu i wyswietla napis "Juz glosowales!"
        - jesli 2 razy lub mniej to glos zalicza i wyswietla napis "Dziekujemy za glos", w bazie oprocz odnotowania na jaki obiekt zaglosowano, odnotowana jest rowniez wartosci glosu oraz zapisuje dokladna date oddania glosu
      - jesli tak, to glos nie jest zaliczany


Ocena dla danego obiektu jest oczywiscie zapisywana w innej tabeli w bazie
Data oddania glosu takze w innej tabeli (jest to potrzebne do oszaczowania czy w ciagu ostatnich 15 minut glosowalo na dany obiekt wiecej niz 2 osoby).  Co np. miesiac tabela z datami jest usuwana.


O ile pierwsza czesc kodu jest do zrobienia o tyle nie wiem jak napisac druga czesc (te pogrubiona). Moglby mi ktos napisac? A moze jest jakis juz gotowy skrypt, ktory wystarczy lekko zmodyfikowac?
Jim
odkopalem taki oto skrypt-dinozaur: sprawdza on czy user oddal juz 2 glosy jesli tak to glos nie zostaje dodany w przeciwnym razie zostaje dodany glos do bazy i do ciasteczek.
ciacho wazne jest 12 godzin.

sorki za brak opisu ale nie mam teraz czasu na to winksmiley.jpg

  1. <?
  2. function show($m,$sw=true) { //wyswietla tresc
  3. global $l,$v;
  4. $redir=true;
  5. $time=4;
  6. $file=&#092;"index.php\";
  7. include&#092;"gora.php\";
  8. echo'<B>Głosowanie</B><BR><BR><BR><center>
  9. <B>'.$m.'</B></font><BR><BR>';
  10.  
  11. if ($sw)
  12. If ($v==&#092;"y\") echo'Zwiększyłeś ranking strony:<BR>'.$l.'<BR>';
  13. else echo'Zmniejszyłeś ranking strony:<BR>'.$l.'<BR>';
  14.  
  15. echo'<BR><BR>Powrót za 4 s.</BODY></HTML>
  16. <!--ISO-->';
  17. }
  18.  
  19.  
  20. if (!empty($l) and ($v==&#092;"y\" or $v==\"n\")) {
  21. session_register(&#092;"vote\");
  22. if ($vote<2 or empty($vote)) {
  23.  
  24. include&#092;"mysql.php\";
  25. $do = mysql_query(&#092;"SELECT rank FROM linki WHERE link = '\".$l.\"'\");
  26. $row = mysql_fetch_array($do);
  27. $c = $row[&#092;"rank\"];
  28. if ($v==&#092;"y\") $c++; else $c--;
  29.  
  30. if (mysql_query(&#092;"UPDATE `linki` SET `rank` = '\".$c.\"' WHERE `link` = '\".$l.\"'\")) {
  31. $vote++;
  32. //ustaw w cookies ilosc glosow +1
  33. setcookie(&#092;"vote\", $vote, time()+43200000);
  34. echo$vote;
  35. show(&#092;"<font color=green>Dziękuję za głosowanie. :]\");
  36.  
  37. } else show(&#092;"<font color=red>Nie udało się oddać głosu. :[\",false);
  38.  
  39.  } else show(&#092;"<font color=red>Oddano juz 2 glosy. Sprobój za 12 godzin.\",false);
  40.  
  41. } else show(&#092;"<font color=red>Coś nie tak z danymi.<BR>Spróbuj jeszcze raz.\",false);
  42. ?>
Bojakki
Mysle, ze to zawsze jakas podstawa do stworzenia czegos:)
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.