1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > php ci提交表单验证 ci表单验证代码

php ci提交表单验证 ci表单验证代码

时间:2020-08-22 13:53:35

相关推荐

php ci提交表单验证 ci表单验证代码

概述

这是只考虑php对表单数据的接收处理。至于js部分以前会结合validate来讲解下

在解释 CodeIgniter 的数据验证处理之前,让我们先描述一下一般的情况:

一个表单显示了。

你填写并提交了它。

如果你提交了一些无效的信息,或者可能漏掉了一个必填项,表单将会连同你的数据和错误问题的描述信息重新显示。

这个过程将继续,直到你提交了一个有效的表单。

在接收端,脚本必须:

检查必须的数据。

验证数据是否为正确的类型,合适的标准。例如,如果一个用户名被提交,它必须被验证是否只包含了允许的字符。它必须有一个最小长度,不能超过最大长度。用户名不能是已存在的他人用户名,或者甚至是一个保留字等。

清理数据使其安全。

如果需要,预格式化数据(数据需要清除空白吗?经过 HTML 编码?等。)

准备数据,插入数据库。

尽管上面的过程并不是很复杂,但是通常需要编写很多代码,而且为了显示错误信息,在网页中经常要使用多种不同的控制结构。创建表单验证虽简单,实施起来却也枯燥无味。其实不仅仅是枯燥无味,而是很多时候想死的心都有。但是本着不放过任何一条漏网之鱼原则,表单验证很有必要

表单验证指南

为了进行表单验证,你需要这三样东西:

一个包含表单的视图文件。

一个包含“成功”信息的视图文件,在成功提交后将被显示。

一个接收并处理所提交数据的控制器函数。

让我们以一个会员注册表单为例来创建这三个玩意。

表单:

使用一个文本编辑器,创建一个名叫 myform.php 的表单。在它里面放上这些代码并把它保存到你的

applications/views/

文件夹中:

My Form

Username
Password
Password Confirm
Email Address

成功页面

使用一个文本编辑器,创建一个名叫 formsuccess.php 的表单。在它里面放上这些代码并保存到你的applications/views/文件夹:

My Form

Your form was successfully submitted!

控制器

使用一个文本编辑器,创建一个名叫 form.php 的控制器。在它里面,放上这些代码并保存到你的

applications/controllers/

文件夹:

class Form extends CI_Controller {

function index()

{

$this->load->helper(array(‘form’, ‘url’));

$this->load->library(‘form_validation’);

if ($this->form_validation->run() == FALSE)

{

$this->load->view(‘myform’);

}

else

{

$this->load->view(‘formsuccess’);

}

}

}

?>

Try it!

要测试你的表单,请使用类似这样的URL访问你的网站:

/index.php/form/

如果你提交表单你只会看到表单重新加载了。这是因为你还没有设置验证规则。

由于你还没有告诉表单验证类验证什么东西。它只是默认的返回了 FALSE (boolean false) 。

run()

方法只在全部成功匹配了你的规则才会返回 TRUE 。

解析

你会注意到在此页上面的几点:

表单 (myform.php) 是一个标准的Web表单,除了以下两点:

它使用一个 表单辅助函数 创建表单开始。技术上,这并非必要。你可以使用标准的HTML来创建,然而,使用辅助函数的好处是它为你生成了基于你配置文件中的URL的 action URL。这使得你的应用在更改URL时更具移植性。 实际上,我个人更加倾向于自己用标准的html来创建表单

在表单的顶端你将注意到如下函数调用:

<?php echo validation_errors(); ?>

这个函数将会返回验证器送回的所有错误信息。如果没有错误信息,它将返回空字符串。

控制器 (form.php) 有一个方法: index()。这个方法初始化验证类并加载你视图中用到的表单辅助函数和URL 辅助函数 它也会

运行基于验证是否成功,它会重现表单或显示成功页面。

验证程序。

设置验证规则( 重点来了)

CodeIgniter允许你为单个表单域创建多个验证规则,按顺序层叠在一起,你甚至可以同时预先处理表单域数据。要设置验证规则请使用set_rules() 函数:

$this->form_validation->set_rules();

上面的函数使用 三个 参数作为输入:

表单域的名字 – 就是你给表单域取的那个名字。

一个此表单域的 "人性化" 名字,它将被插入到错误信息中。例如,如果你有一个表单域叫做“user”你可能给它一个人性化名字叫做“用户名”。 注意: 如果你想让表单域的名字保存在一个语言文件里,请参考翻译表单域名字.

为此表单域设置的验证规则。

这儿有一个示例。在你的 控制器 (form.php) 中紧接着验证初始化函数之后,添加这段代码:

$this->form_validation->set_rules(‘username’, ‘Username’, ‘required’);

$this->form_validation->set_rules(‘password’, ‘Password’, ‘required’);

$this->form_validation->set_rules(‘passconf’, ‘Password Confirmation’, ‘required’);

$this->form_validation->set_rules(‘email’, ‘Email’, ‘required’);

你的控制器现在看起来像这样:

class Form extends CI_Controller {

function index()

{

$this->load->helper(array(‘form’, ‘url’));

$this->load->library(‘form_validation’);

$this->form_validation->set_rules(‘username’, ‘Username’, ‘required’);

$this->form_validation->set_rules(‘password’, ‘Password’, ‘required’);

$this->form_validation->set_rules(‘passconf’, ‘Password Confirmation’, ‘required’);

$this->form_validation->set_rules(‘email’, ‘Email’, ‘required’);

if ($this->form_validation->run() == FALSE)

{

$this->load->view(‘myform’);

}

else

{

$this->load->view(‘formsuccess’);

}

}

}

?>

现在留空表单域提交表单你会看到错误信息。 如果你填充所有的表单域提交表单你会看到成功页。

注意: 出现错误时表单域并没有被使用数据重新填充。稍后我们去搞这个。

使用一个数组设置验证规则

$config = array(

array(

‘field’ => ‘username’,

‘label’ => ‘Username’,

‘rules’ => ‘required’

),

array(

‘field’ => ‘password’,

‘label’ => ‘Password’,

‘rules’ => ‘required’

),

array(

‘field’ => ‘passconf’,

‘label’ => ‘Password Confirmation’,

‘rules’ => ‘required’

),

array(

‘field’ => ‘email’,

‘label’ => ‘Email’,

‘rules’ => ‘required’

)

);

$this->form_validation->set_rules($config);

级联规则(Cascading Rules)

CodeIgniter 允许你将多个规则连接在一起。让我们试一试。修改规则设置函数中的第三个参数,如下:

$this->form_validation->set_rules(‘username’, ‘Username’, ‘required|min_length[5]|max_length[12]|is_unique[users.username]‘);

$this->form_validation->set_rules(‘password’, ‘Password’, ‘required|matches[passconf]‘);

$this->form_validation->set_rules(‘passconf’, ‘Password Confirmation’, ‘required’);

$this->form_validation->set_rules(‘email’, ‘Email’, ‘required|valid_email|is_unique[users.email]‘);

上面的代码设置了一组规则:

用户名表单域长度不得小于5个字符以及大于12个字符。

密码表单域必须跟密码确认表单域的数据一致。

电子邮件表单域必须是一个有效邮件地址。

这里特别要注意一下,这个在初次访问这个函数的时候。并不会调用那些出错信息。只有在提交后,才可能看到

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。