Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odświeżanie strony... php...
Forum PHP.pl > Forum > PHP
Enderlanas
Witam...
Mam bardzo wielki problem. Otóż tworzę grę via www, w php i teraz wziąłem się za stworzenie potworów, na których można zdobyć doświadczenie. Stworzyłem te potwory jako osobne pliki, każdy potwór jest osobnym linkiem. Czyli potwór 1 jest plikiem 1.php, a potwór 2 jest plikiem 2.php. I jeśli wejdziemy na plik 1.php, to pomyślnie dodaje rekord do bazy, typu że dodaje doświadczenie, złoto itd. Ale jeśli odświeżę stronę, to będzie sytuacja taka, jakbym znowu wszedł na tą stronę, czyli znowu mi dodaje doświadczenie. I tutaj właśnie pojawia się problem, ponieważ nie wiem, jak zablokować stronę przed ciągłym odświeżaniem. Chcę zabezpieczyć tę grę, aby nie można było zdobywać doświadczenia klikając ciągle F5... I nie wiem, co robić... Może ktoś miał kiedyś z takim czymś problem, i jakoś go rozwiązał? Myślałem nad przekierowaniem, ale jeśli będzie przekierowanie na inną stronę, to zaś nie wyświetlą się logi, np. "Zdobyłeś tyle i tyle doświadczenia..."

Mam nadzieję, że chociaż jedna osoba będzie w stanie mi pomóc winksmiley.jpg

Pozdrawiam ;>
croc
Po dodaniu rekordu do bazy i wykonaniu wszystkich innych czynności po wysłaniu formularza, powinieneś przekierować stronę na inny lub ten sam plik. Dzięki temu ani odświeżanie nie stanowi już problemu, ani nie można wysłać danych ponownie przez wciskanie "wstecz" w przeglądarce.
  1. header('Location: plik.php');
Enderlanas
No tak, ale tak jak napisałem, nie będzie to wyświetlało napisów typu "Zdobyłeś xxx doświadczenia"

Chyba, że byłby jakiś sposób, że po wysłaniu danych przekierowałoby na tą stronę z której wszedłem na stronę która dodaje dane do bazy, i wyświetlało logi, typu "Dodano coś tam... "
croc
Sposób z header, który podałem, jest standardowym zachowaniem po wysyłaniu formularzy. Nie wiem jak wygląda twój skrypt, ale sposobów masz kilka. Możesz zrobić tak jak mówisz, coś w rodzaju loga, czyli historię zmian doświadczenia zapisywać w bazie danych. To jest moim zdaniem dobry pomysł, bo taka informacja (historia) może się przydać. Możesz też zrobić coś innego: zrobić sobie funkcje do zapisywania i wyświetlania wiadomości. Funkcja zapisująca umieszczałaby treść w sesji, funkcja czytająca treść przed zwróceniem wiadomości usuwałaby tę wartość w sesji.
Ulysess
naprostrzym rozwiązaniem lecz nie do końca dobrym jest zrobić ze podczas wyświetlania listy potworków w bazie jest zmieniana wartośc na 0 a podczas walki na 1 żeby walka się odbyła musi być wartość 0.

słabe strony ? możesz osiweżać w 2 zakładkach a dokładniej w pierwszej liste potworków a w 2 walke lecz trzeba na to wpierw wpaść winksmiley.jpg
Enderlanas
Kurczę... Nigdy bym na coś takiego nie wpadł ;d Po prostu genialne! haha.gif Dzięki wielkie! smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.