Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql] Skrypt oceniania.
Koldy
post
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 28.06.2009
Skąd: Great Britan

Ostrzeżenie: (0%)
-----


Witam,

Mam sobie posty generowane dynamicznie, a w nich 2 linki do oceniania ich. Skrypt wykonuje ajax bez zbędnego przeładowania strony, wszystko działa pięknie, tylko muszę jeszcze zrobić jedną rzecz, a nie bardzo wiem jak.

Mianowicie, chciałbym zrobić tak, by za drugim naciśnięciem skrypt wywalał 'już głosowałeś na ten post' no i zastanawiam się czy osobna tabela była by do tego dobra.

Tabela z postem wygląda (a raczej jej dwie kolumny) tak: plus(int) | minus(int)
chciałbym to tego zrobić tabele:
[id][ip][username][postid]

Działałoby to na zasadzie że użytkownik, zalogowany bądź nie po naciśnięciu linku oprócz inkrementacji wartośći plus lub minus, doda do bazy swój wpis z ip, jeżeli jest zalogowany to nazwe użytkownika, oraz id postu na który głosował. Później skrypt jedynie będzie sprawdzał, czy to IP/user już głosował, jeżeli tak zwróć napis 'już głosowałeś'.

Wszystko pięknie i ładnie, ale czy to jest dobre rozwiązanie? nie zmuli mi strony przy większym ruchu?

Pozdrawiam Rafał.

Ten post edytował Koldy 15.10.2010, 12:20:51


--------------------
$progress++;
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
krowal
post
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

Ostrzeżenie: (0%)
-----


To jest jedyne dobre rozwiązanie smile.gif ale ja bym dał możliwość głosowania tylko zarejestrowanym, inaczej można dużo łatwiej nadużywać tej opcji, chociażby przez zmianę proxy itp. Nie powinno to spowolnić bazy jeśli odpowiednio ustawisz indexy w tabeli, np. unique index na dwie kolumny user_id + post_id.


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
TheTester
post
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 11.03.2009

Ostrzeżenie: (0%)
-----


Chciałbym tylko zauważyć, że takie rozwiązanie spowoduje, że osoby korzystające ze wspólnego IP (sieci osiedlowe czy nawet domowe), zostaną przyblokowane.
Najskuteczniejszym rozwiązaniem jest ograniczenie do zalogowanych użytkowników. Ale jeśli nie chcesz, to bym połączył IP z ciastkiem.

Ten post edytował TheTester 15.10.2010, 13:49:35
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Zawsze może też kombinować pod kątem user-agenta jesli chodzi o ludzi z tej samej sieci.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
krowal
post
Post #5





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

Ostrzeżenie: (0%)
-----


Przecież user-agent można zmienić jeszcze prościej niż IP smile.gif


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
Koldy
post
Post #6





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 28.06.2009
Skąd: Great Britan

Ostrzeżenie: (0%)
-----


okej, pomyślałem nad takim czymś. Gdy użytkownik jest niezalogowany pobierało z tej bazy kolumnę IP z pid, natomiast zalogowanemu pobiera uid i pid. Co myślicie o takim rozwiązaniu?

Teraz pewne pytania do was.
1. W internecie jest pełno stron takich, w których ocenianie jest dostępne bez logowania, moim zdaniem to plus, gdyż szersza społeczność to odbiera. Np. na demotywatorach nie bardzo chciało mi się rejestrować i długi okres nie oceniałem. (teraz już też tego nie robie.. ;O )
2. Jak ustawić indexy UNIQE na pid+uid? bo na jedno wiem, ale żeby były zależne od siebie to trzeba coś robić? (niezbyt dużo bawiłem się tym, to dlatego)
3. To jak z tym user-agent??


--------------------
$progress++;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 06:35