Ten przykład pokazuje, jak w PHP sprawdzić poprawność wypełnienia formularza HTML, a w razie błędnego wypełnienia, poinformować o tym użytkownika.
1. Klasa PHP potrzebna do sprawdzania poprawności --- plik: Validate.php
<code lang="php"> <?php
/** Projekt: Validate Class Plik: Validate.class.php Klasa do walidacji formularzy HTML
Do sprawdzania poprawności, wykorzystuje zmodyfikowane funkcje z klasy SmartyValidate, których autorem jest Monte Ohrt. http://www.phpinsider.com/php/code/SmartyValidate/ /* * @package Validate * @version 0.1 */
class Validate {
function Validate(){ $this->path='validators/'; if (!session_id()) trigger_error ("Validate: Przed użyciem tej klasy, musisz wcześniej wykonać session_start()", E_USER_ERROR); }
function setPath($path){ $this->path=$path; }
function connect($reset=false){ if ($reset) unset($_SESSION['Validate']); }
function disconnect(){ unset($_SESSION['Validate']); }
public function isValid($posted){ $fields=$_SESSION['Validate']['fields'];
Przerabiamy plik, na szablon PHPTAL, dodając znaczniki tal, w ten sposób, aby po powtórnym wyświetleniu formularza, znalazły się w nim już wpisane wcześniej wartości (value):
// bardzo przydatna funkcja do czytelnego drukowania tablic
echo '<pre>'; print_r($var); echo '</pre>'; }
class PHPTALx extends PHPTAL
// rozszerzenie do klasy PHPTAL dodające nową fukcję ułatwiającą wyświetlanie szablonu // i ewentualną obsługę błędów
{
public function DisplayTemplate(){ // wyświetlenie szablonu i ewentualne przechwycenie błędu // dorobić: info mailem do admina w razie draki try { echo $this->execute(); } catch (Exception $e){ echo $e; } }
}
define('FORM_TEMPLATE','formularz5.html');
$template = new PHPTALx(FORM_TEMPLATE);
$template->title="strona testowa";
$validate=new Validate;
if(empty($_POST) OR empty($_SESSION['Validate'])) { $validate->connect(); // uwaga! - wyrażenia nieregularne w delimiterach / / $validate->registerField('imie','isRegExp',array('expression'=>'/^[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ_-]{2,25}$/'),'stripslashes',false); // zarejestrowanie pól formularza i kryteriów sprawszania // registerField('nazwa_pola','nazwa_kryterium',parametry,modyfikatory,czy_wymagane); // false znaczy, że pole nie może być puste $validate->registerField('email','isEmail',$params,'stripslashes',false); $validate->registerField('data','isDate',$params,'stripslashes',false); $validate->registerField('www','isURL',$params,'stripslashes',false); $validate->registerField('gg','isNumber',$params,'stripslashes',false); $template->errors=$validate->Errors; $template->values=$validate->Values; $template->DisplayTemplate(); } else { $validate->connect(); if ($validate->isValid($_POST)){; $validate->disconnect(); echo 'ok'; } else { // błędy w walidacji $template->errors=$validate->Errors; $template->values=$validate->Values; // wyświetlenie pól prawidłowo wypełnionych //echo "prawidłowe<br />"; //printr($validate->ValidFields);