| --pax-- |
Post
#1
|
|
Goście |
Witam serdecznie,
Tworzę prosty kreator testów jednokrotnego wyboru i napotkałem pewną przeszkodę. W pliku kreator.php mam switch:
który prowadzi krok po kroku przez tworzenie testu. Przykładowo w pierwszym kroku wpisuje się do formularza informacje takie jak tytuł, czy liczbę pytań. W kroku 2 sprawdzam poprawność danych i w razie potrzeby wyświetlam link zwrotny, aby poprawić nieprawidłowe dane. Dostęp do kreatora mają tylko zalogowani użytkownicy, dlatego też skorzystałem z sesji, aby sprawdzać, czy użytkownik jest zalogowany. I tu pojawia się mój problem. Wcześniej, przed wprowadzeniem użytkowników, po kliknięciu przycisku przenoszącego wstecz, aby poprawić dane, wszystkie dane wpisane w pola input były zapamiętane. Teraz natomiast, po wprowadzeniu sesji, dane są kasowane i wszystko trzeba wpisywać od nowa. Czy to jest normalne zachowanie sesji? Zależy mi na tym, aby przy najmniejszym błędzie nie trzeba było wpisywać wszystkiego ponownie, tylko dane były zapamiętywane. Da się to jakoś zrobić? Może to zachowanie wynika z mojego błędu. Na początku skryptu umieściłem:
Korzystam też z funkcji sprawdzającej, czy użytkownik jest zalogowany.
Będę wdzięczny za wszelkie wskazówki, jak rozwiązać ten problem. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 244 Pomógł: 21 Dołączył: 10.02.2008 Skąd: Załęcze Wielkie Ostrzeżenie: (0%)
|
a wszędzie podtrzymujesz sesje, aby nie wygasły?
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%)
|
NOm to raz to co napisal help_me ale jest jeszcze jedna rzecz gdy ty dasz link zwrotny i ktos na niego kliknie to strona sie przeladowywuje wiec to jest normalne jednak jak zrobisz skrypt w js history.back(-1) czy jakos tak to to dziala na zasadzie wstecz w przegladarce i dane zostaja w cache wiec nic sie nie kasuje ale nie jestem pewny tego co mowie i czy o to ci chodzi
|
|
|
|
| --pax-- |
Post
#4
|
|
Goście |
Link zwrotny mam w postaci
więc powinien działać prawidłowo. Co do podtrzymywania sesji: na samym początku strony, jeszcze przed switchem, dałem session_start() " title="Zobacz w manualu PHP" target="_manual, nie wiem, czy to wystarczy. W switchu też muszę coś zapisać, aby sesje były poprawnie podtrzymywane? |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 244 Pomógł: 21 Dołączył: 10.02.2008 Skąd: Załęcze Wielkie Ostrzeżenie: (0%)
|
każda strona musi podtrzymywać daną sesje ;x
|
|
|
|
| --pax-- |
Post
#6
|
|
Goście |
Ale kod do wszystkich kolejnych kroków umieszczony jest w tym samym pliku, na jego górze jest rozpoczęcie sesji, sprawdzenie, czy użytkownik jest zalogowany i dopiero później switch z kodem do poszczególnych kroków, więc sesja jest już chyba podtrzymywana. Po dodaniu session_start() do każdego case'a i tak jest ten sam błąd.
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 244 Pomógł: 21 Dołączył: 10.02.2008 Skąd: Załęcze Wielkie Ostrzeżenie: (0%)
|
|
|
|
|
Post
#8
|
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków |
a ja do tego dołożę kodowanie utf-8 bez BOM
|
|
|
|
| --pax-- |
Post
#9
|
|
Goście |
Przeczytałem o tej funckji ob_start w manualu, wyszukałem kilka przykładów jej użycia, ale nadal nie wiem, jak ją zastosować u siebie.
Może dam trochę więcej kodu.
Co w tym przypadku musiałbym objąć funkcjami ob_start i ob_end_flush, żeby dane nie zostały wykasowane przy cofnięciu się do poprzedniej strony? |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 244 Pomógł: 21 Dołączył: 10.02.2008 Skąd: Załęcze Wielkie Ostrzeżenie: (0%)
|
ten kod chyba nie jest poprawnie napisany?! ;x
|
|
|
|
Post
#11
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Cytat
Yyyyy...? Jest sens czegoś takiego? |
|
|
|
| --pax-- |
Post
#12
|
|
Goście |
Cytat ten kod chyba nie jest poprawnie napisany?! A konkretniej co jest niepoprawnego? To jest tylko wycinek, który miał sprecyzować, w jaki sposób działa ten kreator, wstawianie całego skryptu mija się przecież z celem. Cytat Jest sens czegoś takiego? Znalazłem taki kod w jakimś przykładzie, gdzie była sugestia, że warto sprawdzić, czy sesja jest już rozpoczęta, nie wiem do końca, czy ma to sens. Zresztą, wcześniej rozpoczynałem sesję bez tego warunku i wynik był ten sam. |
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 367 Pomógł: 17 Dołączył: 4.03.2008 Ostrzeżenie: (0%)
|
Wcześniej, przed wprowadzeniem użytkowników, po kliknięciu przycisku przenoszącego wstecz, aby poprawić dane, wszystkie dane wpisane w pola input były zapamiętane. Teraz natomiast, po wprowadzeniu sesji, dane są kasowane i wszystko trzeba wpisywać od nowa. Czy to jest normalne zachowanie sesji? Zależy mi na tym, aby przy najmniejszym błędzie nie trzeba było wpisywać wszystkiego ponownie, tylko dane były zapamiętywane. Da się to jakoś zrobić? Może to zachowanie wynika z mojego błędu. Czy formularz tworzysz na takiej zasadzie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Nie wydaje mi sie .... Aby dane były pamiętane po powrocie musisz dodać w formularzu tak jak w moim przykładzie wyraz VALUE gdzie jego wartością będzie zapamiętana w zmiennej sesyjnej wartość wpisana przez użytkownika w pole formularza. Ten post edytował kosmos 20.06.2008, 22:20:13 |
|
|
|
| --pax-- |
Post
#14
|
|
Goście |
Dzięki, pomogło. Co dziwne, wcześniej też ustawiałem value na zmienną zapisaną w sesji, ale nic to nie dało. Najwidoczniej robiłem coś źle. Dzięki za pomoc.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 20.12.2025 - 17:33 |