Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Stronicowanie formularza
riffraff
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 23.11.2008

Ostrzeżenie: (0%)
-----


Temat Stronicowanie Formularza
Witam,

Chciałbym zapytać o Wasze zdanie na pewien problem 

1) Wyjaśnienie problemu
2) Jaki sposób lepszy pod względem bezpieczeństwa
3) Jak wykonać przycisk wróć

ad. 1) Mam wykonać formularz który będzie zawierał wiele komórek do wypełnienia przez użytkownika. Dlatego chcę go podzielić na kilka mniejszych formularzy wyświetlających się jeden po drugim. Nie chcę używać ani cookies ani sesji, więc wszystko robię w jednym pliku - formularz.php, dołączając plik z klasą formularz_klasy.php który zajmuje się generowaniem odpowiednich stron formularza.

formularz.php
  1. <html>
  2. .
  3. .
  4.  
  5. <body>
  6. <?php
  7. include('formularz_klasy.php');
  8. ?>
  9. </body>
  10. </html>



formularz_klasy.php


  1. <?php
  2. <?php
  3. class form
  4. {
  5.  var $data = array();
  6.  
  7.  function form($dane)
  8.  {
  9.      $this->data = $dane; // przekazanie tablicy $_POST do tablicy $this->data używanej wewnątrz klasy
  10.  
  11.  
  12.      // jeśli zostały zapisane zmienne z obu czesci formularza to wyświetl strone trzecia
  13.  
  14.      if(isset($this->data['imie']) && isset($this->data['nazwisko']))
  15.      {
  16.          $this->DrawForm3();
  17.      }
  18.  
  19.      // jeśli została zapisana zmienna z pierwszej czesci formularza to wyswietl nastepna czesc 
  20.      elseif(isset($this->data['imie']))
  21.          $this->DrawForm2();
  22.  
  23.      // jeśli nie wpisano jeszcze zadnej zmiennej to wyswietl pierwsza czesc formularza
  24.      else
  25.          $this->DrawForm1();
  26.  }
  27.  
  28.  function DrawForm1()
  29.  {
  30.      //formularz z pierwszej strony 
  31.  
  32.      echo '<form action="formularz.php" method="post">'
  33.      .'<table cellpadding="1" cellspacing="1">'
  34.      .'<tr>'
  35.      .'<td>Imie</td>'
  36.       
  37.          //ktorego celem jest pobranie danej 'imie'
  38.          .'<td><input type="text" name="imie" value="'.$this->data['imie'].'"></td>'
  39.  
  40.      .'</tr>'
  41.      .'<tr>'
  42.      .'<td colspan = "2"><input type="submit" value="Wyślij"></td>'
  43.      .'</tr>'
  44.      .'</table>'
  45.      .'</form>';
  46.  }
  47.  
  48.  function DrawForm2()
  49.  {
  50.      //formularz z drugiej strony 
  51.  
  52.      echo '<form action="formularz.php" method="post">'
  53.      .'<table cellpadding="1" cellspacing="1">'
  54.      .'<tr>'
  55.      .'<td>Nazwisko</td>'
  56.       
  57.          //ktorego celem jest pobranie danej 'nazwisko' ...
  58.          .'<td><input type="text" name="nazwisko" value="'.$this->data['nazwisko'].'"></td>'
  59.  
  60.      .'</tr>'
  61.      .'<tr>'
  62.      .'<td colspan = "2"><input type="submit" value="Wyślij"></td>'
  63.      .'</tr>'
  64.       
  65.          //...oraz zapamietanie danych z formularza z pierwszej strony( $_POST['imie']  )
  66.          .'<input type="hidden" name="nazwisko" value="'.$this->data['imie'].'">'
  67.  
  68.      .'</table>'
  69.      .'</form>';
  70.  }
  71.  
  72.  function DrawForm3()
  73.  {
  74.      //wyswietlenie obu zmiennych
  75.      echo 'Nadawca: '.$this->data['imie']
  76.      .'</br>Odbiorca: '.$this->data['nazwisko'];
  77.  }
  78.  
  79. }
  80. $formularz = new form($_POST);
  81. ?>



ad. 2)


Na takiej zasadzie chciałbym wykonać całość. Chciałbym się dowiedzieć jaki jest wasz punkt widzenia, czy jest to zły sposób na akwizycję danych i dlaczego, czy lepiej wszystko wrzucić do jednego wora i cały formularz zawrzeć na jednej stronie, i w czym takie podejście jest lepsze od sposobu dzielonego. Szczególnie interesuje mnie abyście popatrzyli na oba sposoby pod kątem bezpieczeństwa.

ad. 3)

Jeżeli chodzi o sposób 'dzielony' to czy macie jakiś pomysł na wykonanie przycisku 'wróć do poprzedniej strony i popraw dane'

Czekam na uwagi i propozycje.


ps. Sorry że tak dużo do przetrawienia na jeden post, starałem się uprościc kod jak tylko moglem
ps2. to mój pierwszy post więc proszę o wyrozumiałość
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 19.08.2025 - 20:32