ďťż

[CMS] Zapis ocen w bazie danych Który sposób wybrać?

       

Podstrony


telcocafe

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:
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:
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.

Z jednej strony użytkownik może mieć zmienny IP bądź mieć możliwość ustawienia własnego wewnętrznego IP - wtedy żadne zabezpieczenie zda się na nic. Sposób 1. to bardziej ścisła ochrona (nie można usuwać rekordów dopóki pozycja istnieje), zaś sp. 2. i 3. luźniejszy i mniej wymagający - powinien wystarczyć do ochrony przed większością botów. Spotkałem się też z opinią, że nawet można założyć 100 skrzynek e-mail na GMail'u, zarejestrować się 100 razy i tyle razy ocenić pozycję.
Użytkownik Ferrari edytował ten post 09 czerwiec 2007, 10:45


ID pozycji | średnia | ilość ocen | ostatni IP - tak byc nie moze, musi tam byc suma i ilosc ocen - wtedy mozna wyliczyc srednia za kazdym razem. poza tym, to czy ktos glosowal mozna zapisywac w w tabeli z informacjami o userze - przynajmniej gdy usunie sie usera znikaja niepotrzebne informacje. natomiast blokowanie mozliwosci glosowania niezarejestrowanym userom przez ip to niezbyt dobry pomysl - szczegolnie w polsce gdzie spora czesc ludzi ma zmienne ip (neo itd.)

ja bym jednak to tak zrobil

ARTID | TYTUL | ?TRESC | AUTOR | ILOSCOCENPLUS | ILOSCOCENMINUS

oraz 2 tabela

ART ID | IP

w 1 tabeli zpaisywane by byly arty, a w 2 tabeli ip ktore glosowaly, tam gdzie ART ID byl by zapisywany ARTID z poprzedniej tabeli.

Deadeye, może.
Suma = Średnia * Ilość głosów Nowa suma = Suma + Ocena Nowa średnia = Suma Więc: Nowa średnia = ( (średnia * ilość) + ocena ) / ++ilość
Co do poprawy oceny, jeszcze się z tym nie spotkałem. Wiem, że Fusion umożliwia wycofanie głosu, ale goście nie mogą oceniać i głosować (przynajmniej tak było). Jednak przy ilości 2000 głosów na 100 plików wychodzi 200 000 rekordów. Adresu IP bądź ID trzeba wyszukać (bez indeksów). Większy problem może jednak sprawić miejsce na dysku niż wydajność. Najprawdopodobniej zastosuję sposób 3.

Oceny + i - są zbyt ogólne.
Użytkownik Ferrari edytował ten post 09 czerwiec 2007, 17:23


Ja mam pytanie troche nie do tematu.
Jak się zalogować do panelu administracyjnego w Mambo?

Gdyby oceniać mogli tylko zarejestrowani użytkownicy, nie byłoby dużego problemu z poprawą lub wycofaniem oceny. Inaczej w przypadku, gdy głosują też goście - adresy IP mogą zmieniać się i pozostaną niezwiązane z nikim rekordy (analogia do wycieków pamięci). Zdecydowałem się na sposób 3 (ewentualnie 2). :)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.