Jak zrobić blokade oceniania?

Witam mam na stronie formulaz z 2 submitami do głosowania (“cool” , “lame”).

Jak zrobić żeby zalogowany user mógł zagłosować tylko 1 raz ??

Jak ktos może to niech pomoże.

Musisz gdzieś zapisywać (najlepiej w bazie danych) użytkowników , którzy głosowali. Przy oddaniu głosu sprawdzasz, czy użytkownik jest na liście, jeśli tak to nie pozwalasz mu głosować, albo najlepiej sprawdzasz to przed wyświetleniem formularza i zamiast niego wyświetlasz mu jakąś informację, że juz głosował (choć niezależnie od tego, musisz sprawdzać to przy zapisywaniu głosu).

No to tak zrobiłem ale każdy moze 2 razy głosować jeśli po losowaniu nie zmieni strony tylko spróbuje jeszcze raz albo odświezy strone.

A jak już jest w bazie to nie może to działa ale czemu 2 razy??

Mam taki kod: (fragment)

require('config.php');

$query=mysql_query("SELECT kto FROM `glosy` WHERE utwor = '$utwor'");


$i=0;

while($row=mysql_fetch_assoc($query))

{

$wyniki[$i]=$row;

$i++;

}

$kto= $wyniki[0]['kto'];

if ($kto==$nick)

{

$blokuj="disabled='disabled'";

}

else{$blokuj="";

}


			echo "	
















	";

I po wciśnięciu pliku zapisuje kto głosował w bazie danych:

$zap="INSERT INTO glosy(kto, utwor) VALUES('$nick', '$utwor')"; 

mysql_query($zap) or die (mysql_error());

header("Location: kategorie.php");

Idziała ale dopiero jeśli ten kto głosował po oddaniu głosu wejdzie na inną strone a potem znowu wejdzie ta z głosowaniem a jeśli odswiezy strone albo wciśnie jeszcze raz to głosuje 2 raz i dopiero za 2 razem ma stałą blokade

Na początek zmień zapytanie sprawdzające czy ten ktoś już głosował, na coś takiego:

$query=mysql_query("SELECT count(kto) FROM `glosy` WHERE utwor = '$utwor' AND kto='$nick'"); [/code]

W ten sposób dostaniesz w odpowiedzi jeden wiersz z liczbą oddanych głosów przez konkretnego użytkownika, jeśli jest więcej niż zero, to oznacza, że już głosował. Nie ma potrzeby pobierania wszystkich i szukania w pętli.

Druga sprawa, to to, że zablokowanie formularza nie uniemożliwia oddania fałszywego głosu, jak ktoś będzie chciał to odblokuje sobie formularz w przeglądarce i i tak odda głos, więc przed zapisaniem głosu, musisz jeszcze raz sprawdzić, czy ta osoba nie oddała już głosu - to da Ci pewność, że nikt nie oszuka.

Ok dzięki.

Wieczorem spróbuje poprawic i napisze czy działa.