Walidacja formularza – część 1

Sprawdzenie poprawności wprowadzonych danych w formularzu można dokonać nie tylko w języku (działającym po stronie klienta) JAVA SCRIPT, ale także i (języku działającym po stronie serwera) PHP.

Naszym celem jest tak wyglądający formularz:

formphp1

Wyświetlający wprowadzone dane:

formphp2

Do stworzenia działającego formularza użyjemy języka HTML razem z PHP, który będzie obsługiwał stworzony w HTML’u formularz.

Zaczynamy od stworzenia struktury formularza w dokumencie HTML:

<form method=”post” action=”walidacja.php”>

<table>

<tr> <td> Imię: </td> <td> <input type=”text” size=”8″ name=”imie”> </input> </td> </tr>

<tr> <td> Nazwisko: </td> <td> <input type=”text” size=”10″ name=”nazwisko”> </input> </td> </tr>

<tr> <td> Miejsce zamieszkania: </td> <td> <input type=”text” size=”12″ name=”msc”> </input> </td> </tr>

<tr> <td> Płeć: </td> <td> <input type=”radio” name=”male”> Mężczyzna </input>

<br>

<input type=”radio” name=”female”> Kobieta </input> </td> </tr>

<tr> <td> Pesel: </td> <td> <input type=”text” size=”11″ name=”pesel”> </input> </td> </tr>

<tr> <td> Numer telefonu: </td> <td> <input type=”text” size=”12″ name=”numer”> </input> </td> </tr>

<tr> <td> Adres e-mail: </td> <td> <input type=”text” size=”10″ name=”email”> </input> </td> </tr>

</table>

<br>

<input type=”submit” value=”Wyślij”> </input>
</form>

Tym razem w przeciwieństwie do formularza obsługiwanego w JAVA SCRIPT gdzie znacznik <form> </form> był opcjonalny, przy użyciu PHP formularz musi być objęty znacznikami <form> </form>, wewnątrz którego określamy metodę przesyłu danych method (GET lub POST) oraz podajemy action czyli skrypt sterujący formularzem w tym wypadku nasz skrypt php.

Zmiana nastąpiła także przy polach formularza, tzn. teraz będą nam potrzebne nazwy nie identyfikatory, PHP operuje na name pól.

Tutaj kończy się już praca z HTML, przechodzimy do zewnętrznego pliku z rozszerzeniem .php.

Tym razem będziemy mieli do czynienia z poleceniami php znajdującymi się w osobnym pliku, jeżeli jednak będziemy chcieli umieścić je w tym samym pliku co polecenia html wtedy powinniśmy pamiętać, aby zmienić rozszerzenie pliku z .html na .php.

Przed rozpoczęciem prac musimy wiedzieć i pamiętać o kilku rzeczach:

  • potrzebny nam uruchomiony serwer Apache (np. w pakiecie XAMPP omówionym w jednym z postów)
  • pliki związane ze stroną musimy umieścić w następującej lokalizacji C:\xampp\htdocs (w folderze htdocs możemy opcjonalnie stworzyć własne podfoldery na pliki)
  • żeby uruchomić naszą stronę w przeglądarce internetowej musimy wpisać localhost/nazwa folderu utworzonego w htdocs(o ile go utworzyliśmy, jeżeli nie to piszemy od razu nazwę pliku z rozszerzeniem/nazwa pliku

Wszelkie operacje itp. umieszczamy wewnątrz znaczników:

<?php

 

?>

Na początek tworzymy sobie puste zmienne, które tworzy się w następujący sposób:

$nazwa_zmiennej = “”;

$imie=””;

$nazwisko=””;

$msc=””;

$plec=””;

$pesel=””;

$numer=””;

$email=””;

Rozpoczynamy walidację, zaczynając od imienia:

if(empty($_POST[‘imie’]))
{
   echo “Nie podales imienia <br/>”;
}

else{
  if(is_numeric($_POST[‘imie’]))
{
   echo “Imie nie może składać się z liczb <br/>”;

}  

else
{
   $imie=$_POST[‘imie’];

   echo “Imie: “.$imie.”<br/>”;
}

}

Jeżeli pobrana wartość $_POST[‘nazwa pola formularza’] ($_GET[‘ ‘] – jeżeli metodę określiliśmy jako GET) jest pusta empty zostanie wyświetlona echo wiadomość o braku imienia. Jeżeli jednak else podamy imie zostanie sprawdzony kolejny warunek is_numeric(pobrana wartość) czy nie wprowadziliśmy w pole imie liczb. Przy wprowadzeniu liczb zostanie wypisana wiadomość, przy podaniu liter wprowadzone dane zostaną przypisane do zmiennej imie a następnie wypisane przy pomocy echo. Normalny tekst piszemy w cudzysłowiach łącząc go kropką ze zmienną, w cudzysłowiach mogą być także polecenia z html takie jak np. <br/>.

To samo robimy z nazwiskiem, miejscem zamieszkania oraz numerem telefonu.

Zabieramy się za płeć:

if(empty($_POST[‘male’]) && empty($_POST[‘female’]))
{
   echo “Nie zaznaczyles płci <br/>”;

}

if(isset($_POST[‘male’]) && isset($_POST[‘female’]))
{
   echo “Zaznacz tylko jedną płeć <br/>”;

   $plec = “”;

}
else if(isset($_POST[‘male’]))
{
   $plec=”Mężczyzna”;

   echo “Plec: “.$plec.”<br/>”;
}

else if(isset($_POST[‘female’]))
{
   $plec=”Kobieta”;

   echo “Plec: “.$plec.”<br/>”;
}

Sprawdzamy najpierw czy pola są puste (niezaznaczone). Następnie jeżeli są zaznaczone obydwie płci isset dostajemy odpowiednią wiadomość, jeżeli zostanie zaznaczona jedna dana płeć to do zmiennej płeć zostaje przypisana wartość a następnie wypisana. Nie zaznaczenie pola można oprócz empty() można także użyć isset() == false.

Pesel:

if(empty($_POST[‘pesel’]))
{
  echo “Nie podałeś peselu <br/>”;
}
else
{
if(strlen($_POST[‘pesel’]) < 11 || strlen($_POST[‘pesel’]) > 11)
{
   echo “Pesel ma mieć dokładnie 11 znaków <br/>”;

}
else
{
if(is_numeric($_POST[‘pesel’]) == false)
{
   echo “Pesel nie może składać się z liter <br/>”;
}
else
{
   $pesel = $_POST[‘pesel’];

   echo “Pesel: “.$pesel.”<br/>”;
}
}

}

Jeżeli pesel zostanie pusty dostaniemy informację o potrzebie jego podania, po podaniu peselu zostanie sprawdzone czy ma dokładnie 11 znaków strlen(), w zależności czy ma 11 znaków czy nie dostaniemy wiadomość lub do zmiennej pesel zostanie ostatecznie przypisana wprowadzona w formularzu wartość, a następnie wypisana.

Na koniec email:

if(empty($_POST[’email’]))
{
   echo “Nie podałeś adresu e-mail <br/>”;
}
else{

if(strstr($_POST[’email’],”@”) == false)
{
   echo “Źle podany email <br/>”;
}
else{

   $email=$_POST[’email’];

   echo “Adres e-mail: “.$email.”<br/>”;

}

}

Jeżeli nie wprowadzimy nic w pole email wypisana zostanie wiadomość, przy podaniu e-maila zostanie sprawdzone czy zawiera on w sobie znak @ strstr(). Kiedy email zostanie wprowadzony i będzie zawierał znak @ do zmiennej email zostanie przypisana wprowadzona w formularzu wartość, a następnie wypisana.

Efektem końcowym jest nasz działający formularz:

formphp1formphp2

Plik do pobrania: PHP1

 

Dodaj komentarz