![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 1 Dołączył: 12.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem sobie wisielca, działa, super, ale postanowiłem go przerobić, by szło zmieniać hasła bez odświeżania strony. Użyłem Ajaxa, który jest wywoływany po naciśnięciu przycisku. Następnie jest wczytywany z oddzielnego pliku kod do nowego hasła. W tym pliku jest i php i js i html
![]() Kod rozpoczynający funkcję w panelu kontrolnym: Kod <input type="button" ... onchange="wisielec();">
Ten post edytował serek 12.06.2011, 21:52:14 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Z eval nie powinno się korzystać: eval is evil
Podałeś za mało informacji, żeby odpowiedzieć Ci w precyzyjny sposób. Moim zdaniem masz źle zaprojektowaną aplikację i powinieneś przemyśleć jej całą strukturę. Opisz dokładniej swój problem podając więcej kodu( tylko ten dotyczący problemu ). Pozdrawiam -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 1 Dołączył: 12.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Hmm... próbowałem inaczej, ale zawsze wyskakują jakieś błędy. Powyższy sposób jest chyba najlepszy.
Mógłbym zrobić też tak: Funkcję js wyrzucam z pliku wczytywanego przez Ajax, wklejam go do kodu statycznego, tam gdzie jest "panel kontrolny". Ale racji tego, że w funkcji tej mam użyte zmienne z php, to kod ten wykona mi się nim wywołam tą funkcję buttonem, więc mi to nie pasuje. Więc zostać muszę przy wywoływaniu funkcji wraz z resztą przy użyciu Ajax'a. Aplikacja działa (a raczej nie działa) mniej więcej tak: Kod //część statyczna: [ //Panel kontrolny z buttonami] - wywołanie funkcji wisielec(): <input type="button" ... onkeypress="setTimeout('wisielec()')"> - wywołanie wczytania pliku przez Ajax //część wczytywana przez Ajax po naciśnięciu buttonu [ //php - wylosowanie z bazy MySQL hasła - podzielenie hasła na części //php+html - wygenerowanie <input>, po jednym na każdą literę hasła //html - obrazek wisielca //js+php - występują zarówno zmienne js jak i zmienne php - podstawienie liter z podzielonego hasła pod zmienne js - podstawianie znaków typu ' oraz - do okienek z hasłem - funkcja główna wisielec() - odwoływanie się w funkcji do elementów html w pliku wczytywanym przez ajax ] //część statyczna: [funkcja wywołująca wczytanie pliku przez Ajax] Zawsze mogę zrezygnować z Ajax'u u ładować nowe hasło przez odświeżenie całej strony, ale to ostateczność. Ten post edytował serek 13.06.2011, 09:59:38 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Szczerze średnio rozumiem po co Ci eval, ale napiszę jak ja to wiedzę...
1. AJAX + PHP: - wywołanie funkcji losującej hasło - zapisanie tego do sesji - Stworzenie przycisków od A-Z i wpisanie na ekran odpowiednią ilość "czegoś", zamiast liter - np. znaku "_" 2. Obrazki powinny być zapisane gdzieś na serwerze i zapisane za pomocą new Image w cache za pomocą JS. A następnie za pomocą konstrukcji Kod img.src = image1.img; zmienione w przypadku błędnej odpowiedzi3. W chwili kliknięcia na któryś z przycisków A-Z, wywołane jest żądanie do PHP z parametrem = danej literce. Serwer ma zwrócić pozycje na których znajduje się dana literka lub np. 0 w przypadku gdy literka nie występuje. Za pomocą JS wpisujesz na daną pozycję daną literkę lub zmieniasz obrazek wisielca w przypadku wystąpienia 0. Dzięki takiej konstrukcji zwracasz tylko liczby! Nie będziesz miał zwracanych żadnych funkcji i nie będziesz musiał korzystać z eval czy czegokolwiek innego. Wszelkie operacje "zmian" wykonasz w JS. Natomiast W PHP będziesz tylko sprawdzał, które literki są na danej pozycji. Powodzenia -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 1 Dołączył: 12.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Ta, ale sesja może wygasnąć po jakimś czasie, akurat jak gość bawi się w wisielca, więc wolałbym zostawić jednak to jako zmienną
![]() Chyba, że przerobię wszystkie zmienne na js. W pliku wczytywanym przez Ajax zostawię tylko funkcję losującą hasło. Ajax będzie to wczytywał do niewidocznego div'a. I funkcje będą korzystać z hasła w tym divie. Wiem, że wtedy hasło byłoby łatwe do odczytania , ale szkodliwość niska, a niezbyt trudne do zrobienia chyba. Ten post edytował serek 13.06.2011, 16:04:04 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Niewidocznego div'a jak i wszelkie obiekty niewidoczne można podejrzeć np.w firebugu, nawet mało tego nie wiem czy można czasami ,także manipulować takimi obiektami.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 1 Dołączył: 12.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mogę jeszcze podstawić to pod sesję, ale ona zawsze po jakimś czasie wygaśnie-nom zawsze ale dopiero po zamknięciu przeglądarki,chyba że się samemu ustawi czas wygaśnięcia sesji.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 1 Dołączył: 12.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Nom dobra, ale z sesją i tak mam problem.
Kodem: Kod var req = mint.Request(); req.Send('abcde'); losuję hasło i podstawiam je pod sesję. Tylko jak po każdej zmianie odczytać tą sesję, skoro php będzie pamiętał początkowe hasło z sesji, bo się już ten php wykonał... |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem pytania, a Ty chyba nie rozumiesz działania sesji i sposób jej obsługi.
Opisz dokładniej problem ![]() -------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 1 Dołączył: 12.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Sorry, ale jakoś nie potrafię pomyśleć
![]() ![]() No więc tak odwołuję się Ajax'em do pliku, w którym losuję hasło i podstawiam je pod sesję. Jak tą sesję mam odczytać bez przeładowania strony, skoro php się wykonuje zaraz po przeładowaniu? Nie wiem jak to inaczej opisać. Coś w stylu: wysyłam Ajax'em żądanie do pliku, że ma wylosować hasło i podstawić do sesji i automatycznie pobieram wartość tej sesji i podstawiam pod zmienną js. Ten post edytował serek 13.06.2011, 18:23:28 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
W takim razie nie rozumiesz działania AJAX-u
![]() Dzięki funkcjonalności AJAX-u możesz uruchamiać skrypty PHP w tle - bez przeładowywania strony. Cytat pobieram wartość tej sesji i podstawiam pod zmienną js. W takim razie jaki ma sens mieszanie do tego PHP? Chyba warto, aby użytkownik nie podglądał hasła. Zrób tak jak Ci pisałem. Po wysłaniu do PHP danej literki PHP zwraca tylko numery, na których stoi dana literka kub 0 w przypadku, gdy takowego nie ma. Poczytaj o AJAX-ie i sesjach! Jeśli pomimo prób nic Ci nie wyjdzie może napiszę coś na kształt gotowca, ale tylko wtedy gdy przedstawisz nam swoje próby. Powodzenia -------------------- |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 1 Dołączył: 12.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dobra, coś wymyśliłem, ale to nie to co byś chciał.
Najpierw kodem wysyłam żądanie do pliku by wylosował hasło, a potem podstawiam do sesji: Kod var req = mint.Request(); req.Send('modules/hangman_haslo.php'); Potem kodem: Kod jQuery.getScript('modules/hangman_haslo_sesja.php'); pobieram zmienne z tego pliku: Kod <?php session_start(); echo' var ses="'.$_SESSION['hangman_word'].'";'; ?> var haslo=ses; To trochę chwile potrwa, więc kodem: Kod setTimeout('sesja()',1000); wywołuję funkcję, w której już odczytuję zmienną z sesją. Wiem, że pobierany wynik można łatwo odczytać np. Firebug'iem, ale nie wpadłem na nic lepszego. Jeszcze coś. Wiem, że powyższy sposób pewnie jest do d*** ![]() ![]() Zdarza się przy tym moim sposobie, że przy jednokrotnym naciśnięciu przycisku to samo nowe hasło jest 2 razy generowane zamiast raz, co skutkuje nałożeniem się jednego na drugie... Ten post edytował serek 16.06.2011, 12:12:22 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 15:48 |