![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 2 Dołączył: 31.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cześć. Robię sobie na własną potrzebę mały skrypt na test online. Chciałbym podłączyć go pod bazę danych którą już posiadam abym miał wgląd do wyników danych użytkowników.
Dostęp do skryptu oczywiście nie jest anonimowy dlatego zależy mi abym wiedział kto jakie ma osiągnięcia i sam użytkownik był świadomy swoich wyników. Skrypt testów znalazłem gdzieś w internecie - jest dość prosty co dla mnie jest sporą zaletą - z zawodu jestem diagnostą samochodowym ![]() Pozostałość napisałem sam - coś tam pamiętam z czasów zabawy z komputerem. Niżej zamieszczam kody które posiadam. Prosiłbym o pomoc bo wykładam ręce, szukałem sporo i to co udało mi się wywnioskować to muszę zastosować Ajax którego nie znam kompletnie. Wyświetlanie testu:
Test:
<span id="QUIZ_points"> - tutaj mamy wynik który chciałbym wysłać do bazy - jak tego dokonać ? Z góry dziękuję ![]() |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 2 Dołączył: 15.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
gotowego kodu za Ciebie nie napiszę bo późno już i ledwo na oczy widzę, ale dam Ci kilka wskazówek (jeśli złożyłeś do kupy kod który wkleiłeś to zakończenie sprawy nie powinno Ci przysporzyć problemów). Ajax faktycznie rozwiąże problem. Na pocieszenie dodam, że to wcale nie jest osobny język, a jedynie technika której możesz używać za pomocą javascriptu (a jeszcze prościej będzie jeśli użyjemy do tego jquery które już zaimportowałeś w pierwszej linijce). A w najprostszej wersji działa to tak:
Najważniejszy jest url, resztą się nie przejmuj. To adres skryptu który ma się wykonać bez przeładowania strony. Tam musisz umieścić prosty kod php który będzie pobierał z tablicy GET wartość punkty i umieszczał ją w bazie danych. Pozdrawiam i życzę powodzenia! PS. Spróbuj przepisać quiz tylko w php, gra nie powinna zając więcej niż 10-15 linijek. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 2 Dołączył: 31.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie
![]() Jak wrócę z pracy to zabieram się za zmiany ![]() Użycie takiego kodu jest bezpieczne ? Bo rozumiem, że po wyświetleniu źródła strony jest możliwe odczytanie
Przez co można sobie samemu nabijać później punkty - dobrze rozumiem ? ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 2 Dołączył: 15.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Nie ma problemu ;) Bardzo dobrze rozumiesz (i tym bardziej się dziwię, że rozumiejąc takie rzeczy nie przepiszesz po prostu gry w php, ewentualnie dodając jakieś elementy js na samym końcu ;P ). Ale rozwiązanie które podałem jest raczej mało eleganckie, nie spodziewałem się, że chcesz ten kod umieszczać online. Jeśli tak to ogólnie jest bardzo mało bezpieczny i pozostawia otwartych wiele dziur, mogących prowadzić do poważniejszych atrakcji jak ataki sql injection lub xss.
Wracając do Twojej gry, tymczasowym rozwiązaniem mogłoby być utworzenie sesji w php i wykonanie kodu tylko wtedy, gdy zmienna w sesji jest ustawiona na określoną wartość. Np. uruchamiając grę, tworzy się zmienna:
Po ostatnim pytaniu ustawiamy ją na:
I tylko wtedy pozwalamy na wykonanie się kodu w skrypcie dodaj_punkty.php:
Ale, jak już wspomniałem wcześniej, to też nie zabezpiecza wszystkiego i sprytny użytkownik i tak będzie w stanie zmodyfikować swój wynik. Żeby to bezpiecznie chodziło musiałbyś poprawić też inne formularze i ogólnie cały kod (przeczytaj mój post który akurat wczoraj napisałem: Temat: PHPzabezpieczenie formularza kontaktowego ). Wiem, że to już staje się powoli nudne, ale po raz kolejny proponuje Ci przepisanie gry w całości w php ;) - dodając ewentualnie javascript już na sam koniec do działającej wersji (żeby np. nie musieć przeładowywać strony). Edit: w dużym skrócie: php wykonuje się po stronie serwera, javascript po stronie klienta. Co za tym idzie, samym javascriptem nigdy tak naprawdę nie zabezpieczysz strony. Ten post edytował shx420 4.11.2015, 19:04:16 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.05.2025 - 20:19 |