Witam mam pytanie jak zablokować by dany użytkownik mógł odebrać nagrody tylko raz ? chodzi o to że jak szybko ktoś kliknie submit 2x to dostanie nagrody 2x
<input type="submit" class="btn btn-info" value="Odbierz nagrody" name="odbierz">
A nie zapisujesz nigdzie informacji, że odebrał nagrodę?
Zapisuje i usuwa z bazy danych dla tego sie dziwie ze jak ktoś szybko kliknie submit to dodaje 2x update
Nie usuwaj informacji o odbiorze, to będziesz przy kolejnej próbie wiedział jak postąpić.
Skrypt musi usunąć wiersz by gracz mógł jechać nowe zawody można jakoś zablokować to ? By tylko raz kliknąć w submit
Co oznacza, że na nowe zawody może jechać kiedy nie odebrał nagrody lub odebrał jedną, tak?
Jeżeli odbierze nagrodę może jechać nowy turniej jeżeli nie odbierze to nie kończy danego turnieju można z tym klikaniem coś zrobić ?
Próbuję Cię naprowadzić, a Ty zamiast wykorzystać informacje, które sam zapisujesz, to próbujesz jakichś kombinacji.
Skoro odbiera nagrodę i zapisujesz tą informację, to po co ją usuwasz? Przy kolejnej próbie odebrania nagrody sprawdzisz czy już odbierał i ewentualnie umożliwisz lub nie.
Nie do końca sie zrozumieliśmy wrzucę kod php później jak będę na PC
Podczas dodania rekordu ustaw sesje (tuz po) a przed dodaniem sprawdz czy istnieje. Jesli istnieje to przekieruj klienta gdziestam lub wyswietl stosowne info. Sama sesje ustaw na jakis konkretny czas chocby 1 minute. Podczas sprawdzania porownaj aktualny czas z sesja. Samą sesje usun tuz przed update.
Czyli:
Warunek spradzajacy czy aktualny czas jest "wiekszy" od tego w sesji. Jesli jest mniejszy znaczy ze sesja trwa mniej niz minute u dajesz jakies info z exit-em.
Jesli jest wiekszy usuwasz te sesje tuz przed dodaniem do bazy.
[ UPDATE ]
ustawienie sesji z czasem.
$_SESSION['time'] = (http://www.php.net/time()+ 60);
<input type="submit" onclick="this.disabled='disabled'"/>
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)