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ネイティブで同様の作業を行うにはどうすればよいですか? 私は検証を意味します

4

2 に答える 2

0

投稿されたフォームの値には、php 変数を介してアクセスできます$_POST。次に、さまざまな検証を実行する関数を php で記述する必要があります。

残りは、 codeigniter がどのようにそれらを行うか、またはphp を使用したサーバー側の検証に関する記事を参照してください

お役に立てれば!

于 2012-04-26T10:32:21.353 に答える
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() ルックアップの有無にかかわらず) などを処理することもできます。特定のケースに合わせて Validator タイプを構築するだけです... または、一般的な Validators があります。

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));

・・・とにかくそうしました。

于 2012-04-26T11:03:41.917 に答える