Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CMS] Zapis ocen w bazie danych
Forum PHP.pl > Forum > PHP
WebCM
Zablokowanie możliwości ponownego oceniania w cookies to za mało. Przestawię kilka sposobów na dalsze zabezpieczenia.

Zapis ocen w osobnych tabelach
Osobne tabele (artrates, filerates, imgrates) będą zawierać pola:
Kod
ID pozycji | ocena | user | IP

1 ocena = 1 rekord. Pole USER będzie wypełniane w przypadku możliwości oceniania tylko przez zarejestrowanych, zaś IP - gdy ocenę będą mogli wystawiać również goście.

W przypadku większych serwisów tabele mogą zawierać dużo rekordów.
1000 ocen * 100 artykułów = 100 000 rekordów

Użytkownicy będą mogli poprawić swoją ocenę.

Zapis tylko ostatniego IP
Prawdopodobnie tak jest w Mambo (wynika to ze struktury tabeli). Każda pozycja (np. artykuł, plik) = 1 rekord. Tu by nawet wystarczyła 1 tabela (jednak 1000 pozycji = 1000 rekordów), choć można zrobić podział podobnie jak wyżej. Pola:
Kod
ID pozycji | średnia | ilość ocen | ostatni IP


2 użytkowników o innych IP może głosować w nieskończoność (nawet zmieniając ID sesji).

Rozwiązanie pośrednie
Podobnie jak wyżej, lecz zapisywanych będzie kilka adresów IP bądź ID użytkowników w ostatnim polu tabeli. Można ją np. ustalić w ustawieniach.

Które z nich jest najlepsze? Ważne, by sposób był sprawny również w większych serwisach.
starach
Najlepsze to by było udostępnienie możliwości głosowania tylko osobom zarejestrowanym. Nie słyszałem o skrajności ponownej rejestracji żeby móc głosować. Jeśli idzie o głosowanie publiczne to chyba dobrym rozwiązaniem było by zapisywanie głosów w jednej tabeli a adresów IP z który głos został już oddany w drugiej. Spotkałem się również z rozwiązaniem na jednej stronie że w ciasteczku było zapisywane czy głos został oddany. Jeśli tak były wyświetlane wyniki, jeśli nie była iluzoryczna możliwość oddania głosu.
Iluzoryczna bo głos nie został oddawany, prawdopodobnie przez sładowanie adresu IP, było natomiast tylko ustawiane ciasteczko.
cicik
A nie uważacie, że problemy w tym stylu, żeby za wszelką cenę jeden user zagłosował najwyżej jeden raz jest bez sensu?
To nie są wybory tylko ankieta, na bardziej lub mniej rozbudowanej stronie, ale to TYLKO ankieta. Jej wyniki tak naprawdę nie mają żadnego znaczenia, są tylko po to aby móc coś sprawdzić "mniej więcej".
Zastanówcie się... po co ktoś miałby głosować na coś 1000 razy? Rozumiem, że chodzi o zabezpieczenie, żeby autor artykułu nie wystawił sobie 10 razy piątki ale nie róbmy paranoi.
Dojdziemy do sytuacji, że system oddawania głosów będzie wymagał certyfikatów ssl i innych głupot a strona 90% swojego czasu wykonania będzie spędzać na pilnowaniu usera.
Nie dochodźmy do paranoi.

Jak ktoś będzie sprytny to usunie ciastko, połączy się przez proksy albo ponownie połączy się modemem albo zrestartuje modem z liveboxa. Nic na to nie poradzicie... Nawet jeżeli zrobicie rejestrację i przy każdej rejestracji nowego usera będziecie sprawdzali czy ktoś o takim mailu już się rejestrował to jeśli ktośbardzo będzie chciał wam popsuć zabawę to założy 100 skrzynek email na gmailu, zarejestruje się 100 razy i i tak nic na to nie poradzicie.
WebCM
Cytat
Iluzoryczna bo głos nie został oddawany, prawdopodobnie przez sładowanie adresu IP, było natomiast tylko ustawiane ciasteczko.
Tak mam zamiar zrobić. Również spotkałem się z tym w portalu Interia.pl.

Cytat
problemy w tym stylu, żeby za wszelką cenę jeden user zagłosował najwyżej jeden raz jest bez sensu?
Z jednej strony tak, z drugiej nie. Niekoniecznie użytkownik musi oddać 100 głosów pod rząd - równie dobrze może zrobić to bot. Podstawowe zabezpieczenia się przydadzą. Tylko jak już napisałem w pierwszym poście - jest kilka sposobów. II lub III jest dobrym kompromisem między wydajnością a częściową blokadą, zaś I - bardziej ścisłą ochroną (+ głos można poprawić). Nad wyborem się zastanawiam - mam nadzieję, że doradzicie mi. smile.gif
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.