Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Blokada przed ponownym zrobieniem zadania
topgear
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
blooregard
post
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...
Go to the top of the page
+Quote Post
MateuszS
post
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
Go to the top of the page
+Quote Post
Rysh
post
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 winksmiley.jpg

[edit]: i kolega był szybszy winksmiley.jpg

Ten post edytował Rysh 27.03.2010, 18:44:32


--------------------
Go to the top of the page
+Quote Post
luck
post
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


--------------------
Go to the top of the page
+Quote Post
topgear
post
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 21:11