2012-04-26 3 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 native? я имею в виду валидациюввод валидации в php

+0

вы можете проверить библиотеку form_validation, чтобы узнать, как CI делает это –

+0

Codeigniter имеет код для этого, я не уверен, что вы ожидаете найти в «php native». В php нет форм (вы можете создать php-файл, который генерирует HTML-форму, но нет родного объекта, который представляет форму afaik). – Nanne

+0

Взгляните на Quickform2 - IMHO - один из лучших подходов для форм PHP. 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() перекодировки) или что-нибудь еще, вы просто строить типы Validator для конкретных случаев ... или у вас есть общие валидаторы:

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, которые выполняют различные валидации: -

Те должны получить вы начали, для остальных have a look at how codeigniter does them или article on server side validation with php.

Надеюсь, это поможет!

Смежные вопросы