w tej chwili najlepszym sposobem wydaje mi się to: w tabeli z użytkownikami dodajesz pole data ostatniego dodania punktów
jeśli ta różnica pomiędzy obecną datą a tą zapisaną w bazie wynosi co najmniej 24h, wówczas, dodaj punkty i aktualizuj datę w bazie danych
można pomysleć o innych rozwiązaniach, zaciągnąc cron do pracy, ale powyższy jest prosty
edytując twój kod (posługuję się timestamp zamiast date):
define('INTERWAL_CZASOWY', 60
*60
*24
); // 24 godziny
$user; // obiekt klasy User
$time = $user->kiedyOstatnioDodanoPunkty(); // int
$log = '10';
if ( $now - $time < INTERWAL_CZASOWY ) {
echo "Nie mineły jeszcze 24h więc nie będzie pkt ^^";} else {
$suma = $user->points() + $log;
mysqli_query("UPDATE `themostp_prezent`.`uzytkownicy` SET `punkty` = $suma,`czasOtrzymaniaPunktow` = $now WHERE `uzytkownicy`.`id` =".$user->id()."");
echo "Dodano $log denarów za poprawne logowanie dzisiaj! Następne pkt za logowanie możesz zdobyć za 24h!";
}
- korzystaj z mysqli_* zamiast mysql_*
- punkty i czas są liczbą, więc nie dajesz `` w zapytaniu
- nie mieszaj nazw polskich z angielskimi
- jeszcze mogę dorzucić, że korzystanie z pojedynczych '' jest szybsze i czytelniejsze od "", a w ogóle ciekawą opcją jest sprintf, np.:
mysqli_query
(sprintf('UPDATE `themostp_prezent`.`uzytkownicy` SET `punkty` = %d,`czasOtrzymaniaPunktow` = %d WHERE `uzytkownicy`.`id` = %d', $suma, $now, $user->id());
kod od razu jest czytelniejszy