![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 1 Dołączył: 23.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Napisałem skrypt w którym najpierw trzeba sie zalogować a następnie rozwiązuje się zadania. Wszystko trzymam w bazie danych. Logowanie jest na sesjach. I mam pytanie jak zabezpieczyć skrypt aby można było tylko raz rozwiązać zadanie |
|
|
![]() |
![]()
Post
#2
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Cytat I mam pytanie jak zabezpieczyć skrypt aby można było tylko raz rozwiązać zadanie Jeśli chodzi Ci o to, że jeden user = jedno podejście do rozwiązania, to niestety, ale technicznie jest to niewykonalne. Wszystkie metody polegające na zapisywaniu IP, przeglądarki, ciasteczek, wszelakich kombinacji zmiennych $_SERVER itp. są nieskuteczne, bo każde z tych ograniczeń można ominąć. Były już zresztą dyskusje na forum na ten temat, wystraczy poszukać. Jedynym rozwiązaniem jest wymaganie podania od rejestrujących się jawnej, jednoznacznie identyfikującej go informacji (np. PESEL, nr. dowodu), ale na takie rzeczy można sobie pozwolic na stronach, które np. gwarantują nagrody rzeczowe bądź pienięzne i jest to wymagane do jednoznacznej identyfikacji użytkownika. W przypadku prywatnej stronki z testem na 20 pytań na jakiś tam temat - nie ma szans. Można utrudnić, ale uniemozliwić się nie da. -------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
Stworz tabele w bazie
id, id_uzyt, pyt1, pyt2 itd Jezeli rozwiazal pytanie, no to w pole pytx wlepiasz wartosc 1, jezeli juz ma taka wartosc, tzn ze wczesniej rozwiazywał to zadanie. Ale cwaniak może się zarejestrować jeszcze raz, wtedy rób tak jak doradza pan wyżej. Ten post edytował MateuszScirka 27.03.2010, 18:40:19 -------------------- O! Zimniok :P
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 821 Pomógł: 111 Dołączył: 11.09.2006 Skąd: Biała Podlaska Ostrzeżenie: (0%) ![]() ![]() |
A jeśli zrobić by tabele, mission:
id, id_gracza, misja_1, (...) misja_20 ? Po wykonaniu misja_1 - przestawiać boola z false na true (co było by sprawdzane podczas próby wykonania ponownie zadania). Chyba, że nie rozumiem pytania ![]() [edit]: i kolega był szybszy ![]() Ten post edytował Rysh 27.03.2010, 18:44:32 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 317 Pomógł: 58 Dołączył: 6.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ale chyba skoro jest logowanie userów, to można zabezpieczyć. Po rozwiązaniu zadania zaznaczamy, że konkretny user już o nie poprosił. Tak jak to opisał wyżej @MateuszScirka. Tylko dałbym trochę inną strukturę tabeli:
Kod id, user_id, pytanie_id To na wypadek, gdyby liczba pytań miała się w przyszłości zmieniać. Wtedy nie trzeba będzie dodawać nowych pól do tabeli, typu "pyt2", "pyt3", ..., "pytn". Ten post edytował luck 27.03.2010, 18:45:36 -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 1 Dołączył: 23.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowiedź aktualnie wystarczy mi to co napisał MateuszScirka
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 21:11 |