2012-04-26 13 views
0
public function registration() 
    { 
    $this->load->library('form_validation'); 
    // field name, error message, validation rules 
    $this->form_validation->set_rules('user_name', 'User Name', 'trim|required|min_length[4]|xss_clean'); 
    $this->form_validation->set_rules('email_address', 'Your Email', 'trim|required|valid_email');`enter code here` 
    $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]'); 
    $this->form_validation->set_rules('con_password', 'Password Confirmation', 'trim|required|matches[password]'); 
     } 

私は検証を実行するcodeigniterでこれを行っています。どのようにPHPのネイティブで同様の作業を行うことができますか?私は妥当性検査を意味しますPHPでの入力検証

+0

あなたが知るためにform_validationライブラリをチェックすることができます、CIがそれを行う方法 –

+0

Codeigniterはこれを行うためのコードを持っていますが、私はあなたが "PHPネイティブ"で見つけることを期待しています。 PHPにはフォームがありません(HTMLフォームを生成するPHPファイルを作成できますが、フォームafaikを表すネイティブオブジェクトはありません)。 – Nanne

+0

Quickform2 - IMHOは、PHPフォームに最適なアプローチの1つです。 http://pear.php.net/package/HTML_QuickForm2 – ExternalUse

答えて

0

これまでのやり方は、フォームオブジェクト、フォームフィールドオブジェクト、およびフォームフィールドバリデーターオブジェクトです。

ですから、すべてのフィールドオブジェクトを作成し、必要であれば、それらにバリデータを添付して、その後、フォームに全体の多くを添付したい - あなたは一種のようなもので終わる:

$oFieldUsername = new FormField('username', new Validator(Validator::TYPE_EMAIL)); 
$oFieldPassword = new FormField('password', new Validator(Validator::TYPE_PASSWORD)); 

$oForm = new Form(Form::METHOD_POST, '/path/to/action.php'); 
$oForm->attachField($oFieldUsername); 
$oForm->attachField($oFieldPassword); 

//form has not been posted 
if(!$oForm->isReceived()) { 
    $oForm->render('/path/to/view.tpl.php'); 
} 

//the form HAS been posted but IS NOT VALID 
elseif(!$oForm->isValid()) { 
    $oForm->render('/path/to/view.tpl.php'); 
} 

//the form HAS been posted and the data LOOKS valid 
else { 
    //do processing and hand-off 
} 

バリデーターは、フィールド・データが必要かどうかを判断する、データが空のストリング(RegExp)と一致するかどうかを判別するなどの処理を行います。

しかし、彼らはまた、電子メールの検証(getmxrrの有無にかかわらず()参照)、または何か他のものを扱うことができ、あなただけ...特定のケースのためのバリデータタイプを構築したり、一般的なバリデータを持っている:

new Validator(Validator::TYPE_EMAIL); //basic email validator 
new Validator(Validator::TYPE_EMAIL_WITH_MX); //email validator with getmxrr() 
new Validator(Validator::TYPE_REGEXP, '/^[\w]+$/'); //generic regular expression with the pattern to match as the second parameter 
new Validator(Validator::TYPE_INT_MIN, 10); //integer with a minimum value of 10 
new Validator(Validator::TYPE_REGEXP, '/^[\w\s]*$/', true); //the third parameter could be an override so that the validation is optional - if the field has a value it MUST validate, if it doesn't have a value, it's fine 

この検証に必要なだけの柔軟性を提供します。 Form::isValid()メソッドはすべて、添付されたすべてのフィールドをループし、バリデータがあるかどうかを確認し、そうであればValidator::isValid()メソッドがtrueを返すかどうかをチェックします。それは、私はとにかくそれをやった方法です...

//the field value must be an integer between 5 and 10 (inclusive) 
$oField->addValidator(new Validator(Validator::TYPE_INT_MIN, 5)); 
$oField->addValidator(new Validator(Validator::TYPE_INT_MAX, 10)); 

また、のようなものでフィールドに複数のバリデータを添付することができます。

0

投稿されたフォームの値には、PHP変数$_POSTからアクセスできます。その後、別の検証を行うPHPの関数を作成する必要があります: -

ものを使用する必要があります。

希望すると便利です。