Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Stronicowanie formularza
riffraff
post 23.11.2008, 01:33:20
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
jarek04
post 23.11.2008, 13:25:48
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 1
Dołączył: 24.01.2004
Skąd: Ruda Śl

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


ad.3
Dodaj pole ukryte z numerem strony i przycisk wróć jeżeli ktoś wcisnął wróć wtedy wyświetl strona - 1, jezeli przechodzi dalej to strona + 1. jeżeli strona jest równa 3 wtedy koniec formularza.

Co do pytania bezpieczeństwo to nie widzę wielkiej różnicy czy to będzie jeden formularz czy rozwiązanie z 3 różnymi. W obu przypadkach poziom bezpieczeństwa jest identyczny i zależy głównie od tego jak obsłużysz dane które zostały przesłane przez użytkownika. Jedyną denerwującą użytkownika rzeczą może być to że jak nie dojdzie do końca to straci wcześniej wpisane dane i będzie musiał zaczynać od nowa. Moze warto wprowadzić opcje zapisu jego informacji w sesji lub ciasteczkach aby kiedy przerwie z jakiś powodów uzupełnianie formularza a potem będzie chciał dokończyć to nie będzie musiał wpisywać wszystkiego od nowa.
Go to the top of the page
+Quote Post
kitol
post 23.11.2008, 14:02:18
Post #3





Grupa: Zarejestrowani
Postów: 162
Pomógł: 26
Dołączył: 19.01.2007

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


Wygeneruj jedną stronę zawierającą cały formularz podzielony na sekcje ukryte (oprócz pierwszej) za pomocą display:none.
Sekcje przełączaj za pomocą JS.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 28.04.2024 - 18:39