• 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ę?

+2 głosów
541 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 (215,070 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 (607,330 p.)
Co ma cron do HTTPS?
komentarz 10 września 2015 przez Ehlert Ekspert (215,070 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 (607,330 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 744 wizyt
pytanie zadane 19 stycznia 2016 w PHP przez bnVsbA== Początkujący (370 p.)
–1 głos
2 odpowiedzi 393 wizyt
0 głosów
1 odpowiedź 258 wizyt
pytanie zadane 5 czerwca 2016 w PHP przez DaltooN Początkujący (430 p.)

93,630 zapytań

142,552 odpowiedzi

323,056 komentarzy

63,137 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2416p. - dia-Chann
  2. 2390p. - DziarnowskiJ
  3. 2317p. - raydeal
  4. 2242p. - Łukasz Piwowar
  5. 2222p. - CC PL
  6. 2184p. - Adrian Wieprzkowicz
  7. 2010p. - rucin93
  8. 1968p. - Michal Drewniak
  9. 1957p. - Maurycy W
  10. 1887p. - Łukasz Eckert
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1377p. - ssynowiec
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...