CI框架表单验证实例详解


Posted in PHP onNovember 21, 2016

本文实例讲述了CI框架表单验证的方法。分享给大家供大家参考,具体如下:

1、form头部信息的自动输出函数(view)

<?php
 $attributes = array('class' => 'email', 'id' => 'myform');
 echo form_open('email/send', $attributes);
 //上面一行代码输出:
 //<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send" id="myform" class="email"/>
 /*
 * form_open_multipart()
 * 函数用法同上,加上了文件上传的信息 上传方式默认为post
 */
?>

2、设置验证规则(controller)

<?php
//注意验证规则的变量名必须设置成 config
$config = array(
        array(
           'field'  => 'username',
           'label'  => '用户名',
           'rules'  => 'required'
         ),
        array(
           'field'  => 'password',
           'label'  => '密码',
           'rules'  => 'required'
         ),
        array(
           'field'  => 'passconf',
           'label'  => '确认密码',
           'rules'  => 'required|matches[password]'
         ),
        array(
           'field'  => 'tel',
           'label'  => '手机',
           'rules'  => 'required|integer|exact_length[11]'),
        array(
           'field'  => 'email',
           'label'  => '邮箱',
           'rules'  => 'required|valid_email'
         )
      );
//上面的会自动
//单独设置规则
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|matches[passconf]|md5');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
?>

3、规则对应的错误提示(controller)

<?php
$this->form_validation->set_message('required', '必须填写');
$this->form_validation->set_message('valid_email', '不是有效的email');
?>

4、运行检查错误信息(controller)

<?php
 $this->load->helper(array('form', 'url'));
 //加载CI表单验证库
 $this->load->library('form_validation');
 //----------------------------------------
 # 验证规则及错误信息代码放在这里
 //----------------------------------------
 if ($this->form_validation->run() == FALSE){
   //提交失败 重新加载表单部分
   $this->load->view('myform');
 }else{
   //提交成功 表单处理
   //跳转成功页面
   $this->load->view('formsuccess');
 }
}

5、错误信息的输出函数(view)

<?php
  //1.一股脑儿的全部输出(放在表单标签的上方即可)
  echo validation_errors();
  //2.针对单个表单单独输出(放在单个标签附近 参数为对应表单元素的域名)
  echo form_error('password');
  //3.针对单个表单输出的时候 需要修改定界符 显示错误信息样式(控制器里设置)
  $this->form_validation->set_error_delimiters('<span class="error">', '</span>');
  //设置成内联元素比较好
?>

6、错误后 重新回填表单(view)

<?php
 //一般元素 回填(放在标签的values属性中输出)
 echo set_value('email');
 //特殊元素select/checkbox/radio 第三个参数为true时 默认被选中
 //第二个参数 是对应的表单元素的实际值
 echo set_select('myselect', 'three'); //放在option的空白属性里
 echo set_checkbox('mycheck[]', '1'); //放在checkbox的空白属性里
 echo set_radio('myradio', '2');    //放在radio的空白属性里
?>

html代码:

<html>
 <head>
  <title>My Form</title>
 </head>
<body>
 <?php echo validation_errors(); ?>
 <?php echo form_open('form'); ?>
  <h5>Username</h5>
  <input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />
  <?php echo form_error('username'); ?>
  <h5>Password</h5>
  <input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" />
  <?php echo form_error('password'); ?>
  <h5>Password Confirm</h5>
  <input type="text" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" />
  <?php echo form_error('passconf'); ?>
  <h5>Email Address</h5>
  <input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />
  <?php echo form_error('email'); ?>
  <div><input type="submit" value="Submit" /></div>
</form>
</body>
</html>

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP出错界面
Oct 09 PHP
操作Oracle的php类
Oct 09 PHP
奇怪的PHP引用效率问题分析
Mar 23 PHP
深入解析php中的foreach问题
Jun 30 PHP
PHP获取昨天、今天及明天日期的方法
Feb 03 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
PHP中串行化用法示例
Nov 16 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
Jan 30 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
PHP简单留言本功能实现代码
Jun 09 PHP
PHP使用XMLWriter读写xml文件操作详解
Jul 31 PHP
PHP常见字符串操作函数与用法总结
Mar 04 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 #PHP
静态html文件执行php语句的方法(推荐)
Nov 21 #PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
Nov 21 #PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 #PHP
关于php中的json_encode()和json_decode()函数的一些说明
Nov 20 #PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 #PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 #PHP
You might like
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
script不刷新页面的联动前后代码
2013/09/18 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
vue.config.js常用配置详解
2019/11/14 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
python继承和抽象类的实现方法
2015/01/14 Python
Python网站验证码识别
2016/01/25 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
python3实现猜数字游戏
2020/12/07 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
Python2与Python3的区别详解
2020/02/09 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
python 绘制场景热力图的示例
2020/09/23 Python
通过实例解析python and和or使用方法
2020/11/14 Python
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
工商管理本科生求职信
2014/07/13 职场文书
出纳岗位职责范本
2015/03/31 职场文书
财务部岗位职责范本
2015/04/14 职场文书
幼儿园见习总结
2015/06/23 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
创业计划书之家政服务
2019/09/18 职场文书