ugrás a tartalomhoz

Form adatok ellenőrzése PHP-vel

Anonymous · 2006. Már. 14. (K), 12.01
Sziasztok!

Van egy regisztrációs form-om, amit szeretnék szépen leellenőriztetni, hogy jól töltötte ki a felhasználó.

Pl.:

function check_form($_POST) {
	$error='';
	if($_POST['pwd'] == '') {
		$error .= "A jelszó mező üres!<br />";
	}
	if($_POST['pwd_check'] == '') {
		$error .= "A jelszó ellenőrző mező üres!<br />";
	}
	if($_POST['pwd'] != $_POST['pwd_check']){
		$error .= "A megadott jelszavak különböznek!";
	}
	return $error;
}
Van erre valami szebb módszer, vagy pedig minden vizsgálathoz if-eket kéne alkalmaznom?

Köszi a választ!
 
1

Szépítés

Anonymous · 2006. Már. 14. (K), 14.41
1. Ha a hibás visszaigazolást berakod egy <ul> be, és a hibák <li>-k.
2. Lehet alkalmazni az if(!($_POST['pwd'])) alakot is.
2

ez teljesen jó

Anonymous · 2006. Már. 14. (K), 14.46
csak én az empty() -t használtam
if (empty($_POST['pwd']) || empty($_POST['pwd_check']))
$error.= "Csak akkor regisztrálhatsz ha kitöltöd az adatokat!";
és egy if-el kevesebb; de nem kell olyan sok mezőt ellenőrizned és ha mindet if ekkel megnézed biztos nem lesz benne hiba
3

Nem látok benne logikát...

-zsolti- · 2006. Már. 14. (K), 15.20
...például a függvény használatot ebben a formában semmi sem indokolja, mivel a $_POST szuperglobális tömb (nem kell a függvénybe bele paraméterezni), másrészt több különböző feladatot is egyben végrehajt, s így ez nem igazán meríti ki a függvény fogalmát. Én inkább úgy csinálnám, hogy minden ellenőrzendő adatra (amik különbözőek) írnék függvényt.
pl:

function checkMailFormat($mail) {
  // szép regexp ellenőrzés, true-t vagy false-ot ad vissza
}
function checkLoginFormat($login) {
 // szintén
}
Ezeket később több helyen is felhasználhatod (login, regisztráció, jelszó újraküldés), ez lenne a függvények lényege. Ahol pedig csak két stringet kell összehasonlítanod, oda nyilván nem kell függvény, csak egy if-ben megvizsgálod. OO nélkül így végezém a form adatok ellenőrzését:

<?php
// beágyazod az ellenőrző függvényeket

if($_POST['action'] = 'formHasBeenSent') {
  if(!checkMailFormat($_POST['mail'])) {
    $error .= 'Hibás mail';
  }
  if(!checkLoginFormat($_POST['login'])) {
    $error .= 'Hibás mail';
  }
  if(!isset($_POST['pwd']) || ($_POST['pwd'] != $_POST['pwd_check'])) {
    $error .= 'Nem egyeznek a jelszók';
  }
  ...
  if(!isset($error) {
    // nincs hiba, itt történik db-be írás, stb, majd 
    // elirányítás egy másik oldalra (regisztráció megtörtént)
  }
}

if(isset($error)) { // ha van hiba, az újratöltődésnél itt írja ki
  echo $error;
}

// itt van pl. a form, ha önmagának postol
?>