• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

W jaki sposób zablokować skrypt (zagadka), by użytkownik mógł udzielać odpowiedzi tylko raz na dobę?

Object Storage Arubacloud
+2 głosów
306 wizyt
pytanie zadane 9 września 2015 w PHP przez Dr. Zawijas Użytkownik (610 p.)
Cześć,
Napiszę więcej szczegółów:

1.Koncepcja
Gdy user loguje się na stronę, index.html zostaje zastąpiony przez index.php za pomocą header('Location:_')
i to właśnie tam dzieje się akcja.
Zalogowani użytkownicy widzą przycisk "zagadka", gdy go klikną wysówa się div z zainkludowanym skryptem zagadki. Poprawna odpowiedź dodaje userowi 2 punkty, błędna wyświetla pomyłkę.

2.Moje rozwiązanie
Pytanie jest wyciągane z MySql  w taki sposób: ("SELECT pytanie from zagadki where id=".date('d'))
Czyli id  wyświetlanego cytatu odpowiada numerowi dnia w miesiącu.
 

Pod pytaniem jest formularz z jednym inputem typu text i przyciskiem "wyślij"
Dalej, skrypt porównuje odpowiedź z odpowiedzią z bazy i jeżeli się zgada: user otrzymuje 2 punkty.
("UPDATE uzytkownicy SET punkty = punkty +2 WHERE id =".$_SESSION['id']."")

A jeżeli jest błędna, wyświetla się informacja o błędnej odpowiedzi.

3. Pytanie:
Potrzebuje ograniczyć wyświetlanie skryptu.
Chcę, żeby można było tylko raz na dobę udzielić odpowiedzi.
Chciałbym żeby po udzieleniu odpowiedzi, nie wyświetlało się nic poza informacją o wyniku,
a sam formularz z nowym pytaniem pokazał się po północy następnego dnia.

Czy dobrze wyjaśniłem mój problem?

P.S

Tak wiem, że jest Cron, ale nie wiem co, jak, gdzie i w którą strone to zrobić...
i chyba wogóle nie mogę, bo pracuje na localhoscie.

3 odpowiedzi

+1 głos
odpowiedź 9 września 2015 przez event15 Szeryf (93,790 p.)
wybrane 13 września 2015 przez Dr. Zawijas
 
Najlepsza
W tabeli użytkownika dodac kolumnę w której będzie zapisana data ostatniej odpowiedzi? A później porównanie jej z dniem aktualnym

if(odpowiedziales dzis) then include(test)

i tyle. Tak na szybkiego :)
komentarz 9 września 2015 przez Dr. Zawijas Użytkownik (610 p.)
O i jest pomysł, fajny nawet i sesje będzie obejmował.
Spróbuje napisać i wkleje. Zaobaczymy
komentarz 9 września 2015 przez CzlowiekSkrypt Nałogowiec (26,340 p.)
Albo dodać jakieś pole ''lock'' które będzie przyjmować wartość 1 jeśli ktoś dodał odpowiedź i tą wartością blokować formularz, a cron by go resetował np o północy na 0, mniej zabawy niż z datami  :)
komentarz 9 września 2015 przez Dr. Zawijas Użytkownik (610 p.)
Hej, a da się coś w tym stylu w js machnąć?
Np. Jakaś funkcja js na button. Żeby ustawić tak:
Jeżeli było dziś kliknięte, to zmień akcje po kliknięciu przycisku na "żadną" czy coś.

Ma to ręce i nogi?
komentarz 10 września 2015 przez CzlowiekSkrypt Nałogowiec (26,340 p.)
No tak, ale po przeładowaniu strony wszystko się zresetuje i przycisk będzie znów aktwyny, możnaby zablokować go też ciasteczkiem ale tu jest niebezpieczeństwo takie że ogarnięty użytkownik może sobie to ciacho skasować i szaleć dalej :)
0 głosów
odpowiedź 10 września 2015 przez Ehlert Ekspert (212,670 p.)

W zależności od tego na jakim hostingu nstoi strona, możesz używać (lub nie) Crona. Kombinuj z nim, to taki linuxowo-https'owy harmonogram zadań.

komentarz 10 września 2015 przez Comandeer Guru (600,810 p.)
Co ma cron do HTTPS?
komentarz 10 września 2015 przez Ehlert Ekspert (212,670 p.)
Jeśli się czepiać słówek, to do httpsa nic, ale do serwera z https'em dużo.
komentarz 10 września 2015 przez Comandeer Guru (600,810 p.)
No też nie ;) cron jest menedżerem zadań dla systemu Linux - de facto podobnym do harmonogramu zadań w windowsie. Nie ma nic wspólnego z serwerem HTTP. Zwłaszcza, że jest uruchamiany poza jego środowiskiem, jako część systemu, nie samego serwera HTTP.
0 głosów
odpowiedź 13 września 2015 przez Dr. Zawijas Użytkownik (610 p.)
Hej. Mam. Zrobiłem to tak:

Dodałem do bazy danych czas odpowiedzi i porównałem go z czasem aktualnym.
Jeżeli czas z bazy jest różny od daty dzisiejszej to możesz odpowiedzieć na aktualne pytanie. W innym wypadku nie wyświetla się formularz z pytaniem. User widzi tylko komunikat oparty o zmienną sesyjną, o treści "dziś już udzieliłeś odpowiedzi, wróć jutro" i tyle. Działa. Dziękuje.

Podobne pytania

0 głosów
4 odpowiedzi 409 wizyt
pytanie zadane 19 stycznia 2016 w PHP przez toster234 Początkujący (370 p.)
–1 głos
2 odpowiedzi 172 wizyt
0 głosów
1 odpowiedź 164 wizyt
pytanie zadane 5 czerwca 2016 w PHP przez DaltooN Początkujący (430 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...