Just nu i M3-nätverket
Gå till innehåll

Valideringsproblem med OOP


Re-JeeP

Rekommendera Poster

Hej!

 

Jag håller på att bygga en klass som ska validera ett formulär.

 

Koden beter sig lite konstigt.

 

Om jag skriver en felaktig e-post adress så skriver den ut alla andra som är fel.

 

Men om jag skriver in en korrekt e-post adress så visar den inte om någon av dom andra är fel.

 

Hur kommer detta sig?

 

<?php
class ValidateNewMemberForm
{
	var $var_lanid;
	var $var_passwd;
	var $var_name;
	var $var_email;
	var $reg_error = array();

	function lanid()
	{
		if($this->var_lanid == "")
		{
			$this->reg_error[] = 0;
			return $this->reg_error;
		}

	}

	function passwd()
	{
		if(strlen($this->var_passwd) < 6)
		{
			$this->reg_error[] = 1;
			return $this->reg_error;
		}
	}

	function name()
	{
		$split_name = explode(" ", $this->var_name);

		if(($this->var_name == "") || count($split_name) < 2)
		{
			$this->reg_error[] = 2;
			return $this->reg_error;
		}
	}

	function email()
	{
		$pattern_email = "/^[-A-Za-z0-9_.]+[@][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+)*[.][A-Za-z]{2,6}$/";

		if(!preg_match($pattern_email, $this->var_email))
		{
			$this->reg_error[] = 3;
			return $this->reg_error;
		}
	}
}

$myclass = new ValidateNewMemberForm;

$myclass->var_lanid = "";
$myclass->var_passwd = "";
$myclass->var_name = ucfirst("asds");
$myclass->var_email = "asd@asd.asd";

$reg_error = $myclass->lanid();
$reg_error = $myclass->passwd();
$reg_error = $myclass->name();
$reg_error = $myclass->email();

$error_list[0] = "Lanid";
$error_list[1] = "Lösenord";
$error_list[2] = "Namn";
$error_list[3] = "E-post";

print_r($reg_error);

for($i=0; $i<count($reg_error); $i++)
{
	echo $error_list[$reg_error[$i]].'<br />';
}
?>

 

Tack på förhand!

 

Mvh // Johan

 

Länk till kommentar
Dela på andra webbplatser

En snabb lösning.

Flytta ut "return $this->reg_error;" till efter if satserna i alla valideringsmetoder.

Som det är nu så $reg_error sättas till null om metoderna inte returnerar något.

 

Länk till kommentar
Dela på andra webbplatser

Åhh... Dumt av mig att inte se det... =)

 

Det löste problemet i alla fall!

 

Tack så mycket!

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...