pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

ثبت نام
انجمن عمومی گسترش فناوری آگو

اگر اولین بار از انجمن بازدید می کنید برای دسترسی کامل به انجمن عضو شوید بعد عضویت قادر به ارسال مطلب و شرکت در بحث خواهید داشت

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ساخت کلاس validation با php
02-06-2013, 02:25 PM
ارسال: #1
ساخت کلاس validation با php
بی شک یکی از مشکلات برنامه نویسان Valid کردن اطلاعات ورودی هست . معمولا هم ما با استفاده از IF ... ELSE کار خودمونو راه می ندازیم. اما بهتره از Strategy Pattern استفاده بشه . بی شک به شما خیلی بیشتر کمک می کنه . برنامه هم خانایی بیشتری پیدا می کنه .
بهتره بریم سر اصل مطلب .

validator.php

کد php:
<?php
/**
 *  کلاس اصلی
 */
class Validator {
    
/**
    * Private
    * $errorMsg نگهداری خطا ها در صورت وجود
    */
    
var $errorMsg;
    
//! A constructor.
    /**
    * ساخت یک شی validator جدید
    */
    
function Validator () {
        
$this->errorMsg=array();
        
$this->validate();
    }
    
/**
    * @return void
    */
    
function validate() {
        
    }
    
/**
    * اضافه کردن خطا به آرایه
    * @return void
    */
    
function setError ($msg) {
        
$this->errorMsg[]=$msg;
    }
    
/**
    * بازگشت درست و غلط 
    * @return boolean
    */
    
function isValid () {
        if ( isset (
$this->errorMsg) ) {
            return 
false;
        } else {
            return 
true;
        }
    }
    
/**
    *  بدست آوردن خطا ها
    * @return string
    */
    
function getError () {
        return 
array_pop($this->errorMsg);
    }
}
/**
 *valid کردن username
 */
class ValidateUser extends Validator {
    
/**
    * $user متغیر مورد نیاز
    */
    
var $user;
    
/**
    * اخت یک شی validatoruser جدید
    * @param $user the string to validate
    */
    
function ValidateUser ($user) {
        
$this->user=$user;
        
Validator::Validator();
    }
    
/**
    * Validates کردن username
    * @return void
    */
    
function validate() {
        if (!
preg_match('/^[a-zA-Z0-9_]+$/',$this->user )) {
            
$this->setError('Username contains invalid characters');
        }
        if (
strlen($this->user) < ) {
            
$this->setError('Username is too short');
        }
        if (
strlen($this->user) > 20 ) {
            
$this->setError('Username is too long');
        }
    }
}
/**
 *  Validate کردن  password
 */
class ValidatePassword extends Validator {
    
/**
    * $pass متغیر مورد نیاز
    */
    
var $pass;
    
/**
    * $conf متغیر تکرار کلمه عبور
    */
    
var $conf;
    
/**
    * ساخت ValidatePassword شی جدید
    * @param $pass the string to validate
    * @param $conf to compare with $pass for confirmation
    */
    
function ValidatePassword ($pass,$conf) {
        
$this->pass=$pass;
        
$this->conf=$conf;
        
Validator::Validator();
    }
    
/**
    * Validates کردن  password
    * @return void
    */
    
function validate() {
        if (
$this->pass!=$this->conf) {
            
$this->setError('Passwords do not match');
        }
        if (!
preg_match('/^[a-zA-Z0-9_]+$/',$this->pass )) {
            
$this->setError('Password contains invalid characters');
        }
        if (
strlen($this->pass) < ) {
            
$this->setError('Password is too short');
        }
        if (
strlen($this->pass) > 20 ) {
            
$this->setError('Password is too long');
        }
    }
}
/**
 *  Validates کردن email address
 */
class ValidateEmail extends Validator {
    
/**
    * $email متغیر مورد نیاز
    */
    
var $email;
    
/**
    * جدید ValidateEmail ساخت شی
    * @param $email the string to validate
    */
    
function ValidateEmail ($email){
        
$this->email=$email;
        
Validator::Validator();
    }
    
/**
    * Validates کردن email address
    * @return void
    */
    
function validate() {
        
$pattern=
    
"/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/";
        if(!
preg_match($pattern,$this->email)){
            
$this->setError('Invalid email address');
        }
        if (
strlen($this->email)>100){
            
$this->setError('Address is too long');
        }
    }
}
?>

index.php

کد php:
<?php
if ( $_POST['register'] ) {
    require_once(
'lib/Validator.php');
    
$v['u']=new ValidateUser($_POST['user']);
    
$v['p']=new ValidatePassword($_POST['pass'],$_POST['conf']);
    
$v['e']=new ValidateEmail($_POST['email']);
    foreach(
$v as $validator) {
        if (!
$validator->isValid()) {
            while (
$error=$validator->getError()) {
                
$errorMsg.="<li>".$error."</li>\n";
            }
        }
    }
    if (isset(
$errorMsg)) {
        print (
"<p>There were errors:<ul>\n".$errorMsg."</ul>");
    } else {
        print (
'<h2>Form Valid!</h2>');
    }
} else {
?>
<h2>Create New Account</h2>
<form action="<?php echo ($_SERVER['PHP_SELF']); ?>" method="post">
<p>Username: <input type="text" name="user"></p>
<p>Password: <input type="password" name="pass"></p>
<p>Confirm: <input type="password" name="conf"></p>
<p>Email: <input type="text" name="email"></p>
<p><input type="submit" name="register" value=" Register "></p>
</form>
<?php
}
?>
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition