CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)


Posted in PHP onNovember 21, 2016

本文实例总结了CI框架常用经典操作类。分享给大家供大家参考,具体如下:

1. 超级对象中的URI

CI_URI类的解析url的相关信息

直接使用$this->uri可以使用它的相关属性

system/core/URI.php文件中

部分常用属性:

(1) 分段获取url相关信息

$this->uri->segment(4);
//获取url中pathinfo
//的第四段的值

入口文件.php/控制器/动作/参数1/参数2/...

(2) 通过方法中的形参传参

需要设默认值和顺序要注意

index.php/user/index/3/zhangsan

public function index($id=0,$name=''){
  echo $id,$name;
}

2.CI控制器的扩展

在application/core/文件夹下面

添加自己的扩展控制器

class MY_Controller extends CI_Controller{
  public function __construct(){
   parent::__construct
  }
}

配置模型前缀

$config['subclass_prefix']='MY_';//默认值

3.模型的相关操作

文件名全小写,类名首字母大写

建议类名加上 _model后缀

在控制器中加载模型:

在construct中加入:

$this->load->model('User_model');
$this->User_model->get();

为模型起别名

$this->load->model('User_model','user');
$this->user->get();

4.url中的常用函数

(1)帮助我们生成控制器

$this->load->helper('url');
site_url('控制器/方法');

(2)图片路径的使用

$this->load->helper('url');
<img src="<?php echo base_url();?>upload/a.jpg" />

可以在autoload.php中配置自动加载

$autoload['helper']加入url

5. CI中的路由与伪静态

(1) 路由伪静态

$router['show/([\d]+)\.html']='article/show/$1';
article/show/5.html => article/show/5;

(2) 隐藏入口文件

#开启apache的rewrite模块
#在根目录中放入.htaccess文件进行重写
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

6. CI中的分页

//模型中操作
//装载分页类文件
$this->load->library('pagination');
$this->load->helper(url);
//分页链接
$config['base_url'] = site_url('user/test');
//总记录条数
$config['total_rows'] = 100;
//每页显示10条数据
$config['per_page'] = 10;
//偏移量
$offset_limit = intval($this->uri->segment(3));
$this->pagination->initialize($config);
echo $this->pagination->create_links();

分页中按钮的定制(注意在初始化之前配置好)

$config['first_link'] = '首页';
...
$config['uri_segment'] =3;//分页数据查询偏移量

在url的哪一段上,对应上面的$offset

默认是3,否则需要修改对应值

7. CI 中session的使用

//加载session库
$this->load->library('session');

(1)获取系统session

//比如获取客户端的ip地址
$this->session->userdata('ip_address');

(2) 添加自定义session

//添加
$this->session->set_userdata('some_name', 'some_value');
//获取
$this->session->userdata('some_name');
//删除
$this->session->unset_userdata('some_name');

(3)闪出数据 (取出一次后失效)

//添加
$this->session->set_flashdata('item', 'value');
//获取
$this->session->flashdata('item');

登录数据中 返回登录前的那一个页面的url可以记录下来,

注意:一次性的数据,读取一次后会自动销毁。

为了确保安全,在config.php生成随机加密的字符串中加入

$config['encryption_key']="fjkdsffjkhjd#kjh";

是否要将cookie加密

$config['sess_encrypt_cookie'] =TRUE;

8. CI中的文件上传

<form action="<?php echo site_url('user/upload');?>" enctype="multipart/form-data">
 <input type="file" name="pic"/>
 <input type="submit" value="submit">
</form>

上传处理:

$config['upload_path']="./upload";
$config['allowed_types']='gif|jpeg|jpg';
$this->load->library('upload',$config);
$this->upload->do_upload('pic');

文件上传的数据

$filedata = $this->upload->data();

9. CI中的验证码

//生成验证码
$this->load->helper('captcha');
$this->load->helper('url');
$vals = array(
  'word'=>rand(1000,9999),
  'img_path'=>'./captcha/',
  'img_url'=>base_url().'/captcha/'
  'img_width'=>'150',
  'img_height'=>'100',
  'expiration'=>7200
);
$cap = create_captcha($vals);
echo $cap['image'];
//将验证码获取的数字放在session中
session_start();
$_SESSION['cap'] = $cap['word'];

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

PHP 相关文章推荐
Oracle Faq(Oracle的版本)
Oct 09 PHP
综合图片计数器
Oct 09 PHP
小偷PHP+Html+缓存
Dec 20 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
linux命令之调试工具strace的深入分析
Jun 03 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
Nov 05 PHP
PHP防盗链的基本思想 防盗链的设置方法
Sep 25 PHP
功能强大的PHP发邮件类
Aug 29 PHP
thinkphp分页集成实例
Jul 24 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
php使用event扩展的io复用测试的示例
Oct 20 PHP
CI框架入门之MVC简单示例
Nov 21 #PHP
php_pdo 预处理语句详解
Nov 21 #PHP
CI框架表单验证实例详解
Nov 21 #PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 #PHP
静态html文件执行php语句的方法(推荐)
Nov 21 #PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
Nov 21 #PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 #PHP
You might like
人大复印资料处理程序_补充篇
2006/10/09 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
利用js对象弹出一个层
2008/03/26 Javascript
Array.prototype.concat不是通用方法反驳[译]
2012/09/20 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
Python自动登录126邮箱的方法
2015/07/10 Python
Python实现的凯撒密码算法示例
2018/04/12 Python
python常用函数与用法示例
2019/07/02 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
2020/04/10 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
端午节粽子促销活动方案
2014/02/02 职场文书
市场部经理岗位职责
2014/04/10 职场文书
小学课外活动总结
2014/07/09 职场文书
委托书的写法
2014/09/16 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
文案策划岗位职责
2015/02/11 职场文书
PHP新手指南
2021/04/01 PHP
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技