Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sesje i dane z formularza
--pax--
post
Post #1





Goście







Witam serdecznie,
Tworzę prosty kreator testów jednokrotnego wyboru i napotkałem pewną przeszkodę. W pliku kreator.php mam switch:

  1. <?php
  2. switch ($krok)
  3. ?>

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:

  1. <?php
  2. if (session_id() == "")
  3. ?>

Korzystam też z funkcji sprawdzającej, czy użytkownik jest zalogowany.
  1. <?php
  2. function sprawdz_uzyt()
  3. // sprawdzenie czy użytkownik jest zalogowany
  4. {
  5. if (isset($_SESSION['uzyt']))
  6. {
  7. echo 'Zalogowano jako '.stripslashes($_SESSION['uzyt']).'.';
  8. return true;
  9. }
  10. else
  11. {
  12. echo 'Nie jesteś zalogowany.';
  13. return false;
  14. }
  15. }
  16. ?>

Będę wdzięczny za wszelkie wskazówki, jak rozwiązać ten problem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
--pax--
post
Post #2





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.
  1. <?php
  2. if (session_id() == "")
  3. if (!sprawdz_uzyt())
  4. die(' Musisz się zalogować, aby dodawać nowe testy.');
  5.  
  6. $krok = intval($_GET['krok']);
  7.  
  8. switch($krok)
  9. {
  10. case '1':
  11.  ?>
  12.  <form action="index.php?go=kreator&krok=2" method="post">
  13.  <input type="text" name="tytul" size="80" />
  14.  //Reszta inputów do wpisania danych
  15.  <input type="submit" value="Dalej" /></form>
  16.  <?php
  17.  break;
  18. case '2':
  19.  //Sprawdzenie poprawności danych
  20.  if ( (strlen($_GET['tytul']) > 250) || (strlen($_GET['tytul']) < 5 ))
  21. {
  22. echo 'Wpisano niepoprawny tytuł.<br />';
  23. $popraw = 1;
  24.  
  25.  }
  26.  //Dalsze sprawdzanie danych
  27.  if ($popraw)
  28. echo '<a href="javascript:history.back()">Wróć, aby poprawić dane.</a>';
  29.  //Jesli dane sa poprawne, przeslanie do kroku 3
  30. ?>



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

Posty w temacie


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

 



RSS Aktualny czas: 27.12.2025 - 06:15