![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 6 Dołączył: 7.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam oto taki problem. Robię moduł głosowania na najlepszego gracza. Formularz po stronie użytkownika wygląda następująco: |Zawodnik|Ocena (pole select)|Zawodnik ID(pole input atrybut hidden)| Sprawa wygląda następująco po naciśnięciu przycisku submit w pętli odczytuję ID zawodnika i wybraną dla niego ocenę i wysyłam do bazy. No ale tu jest pewien problem, bo przecież mając np Firefoxa bez problemu możemy manipulować zawartościami pól ukrytych a tym samym, ktoś mógłby ocenić 10 razy tego samego zawodnika, lub gracza, którego nie ujęliśmy w głosowaniu. Macie jakiś pomysł jak się przed tym zabezpieczyć? Chodzi mi jeszcze po głowie żeby wrzucić id zawodników przy generowaniu formularza do sesji i później je porównać z tym co jest w ukrytych polach, czy ma to jakiś sens? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 1 Dołączył: 24.06.2010 Skąd: Sopot Ostrzeżenie: (0%) ![]() ![]() |
Użyj sesji. Przy wejściu na stronę użytkownik będzie generował ciasteczko. Teraz gdy użytkownik głosuje na zawodnika to po stronie serwera sprawdzasz w sesji info o tym. Przechowujesz np tablicę z ID zawodników. Jeśli id jest w sesji to nie dodajesz głosu.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Możesz użyć sesji, możesz użyć sum kontrolnych, możesz użyć ciasteczek.
Mi pierwsze co wpadło do głowy to dodanie ukrytego pola checksum w formularzu z sumą np. md5 liczoną po wierszu w tabeli+jakaś sól. Później jak masz id to liczysz sumę po tym wierszu i sprawdzasz do sumy kontrolnej - zgadza się to nie ma manipulacji (przy założeniu że pola w tabeli nie zmienią swojej zawartości po drodze). Które rozwiązanie wybierzesz - już twoja wola i umiejętności. EDIT: Drugie spojrzenie - rozwiązanie z sumą ma wadę - zbyt łatwo powiązać id <=> suma kontrolna. Lepiej jednak użyć sesji. Ten post edytował everth 11.08.2010, 12:20:34 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 01:31 |