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 相关文章推荐
Windows下的PHP5.0详解
Nov 18 PHP
推荐个功能齐全的发送PHP邮件类
Jan 03 PHP
站长助手-网站web在线管理程序 v1.0 下载
May 12 PHP
php对图像的各种处理函数代码小结
Jul 08 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
May 04 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
Feb 16 PHP
PHP动态生成指定大小随机图片的方法
Mar 25 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
YII框架中使用memcache的方法详解
Aug 02 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 PHP
PHP中define() 与 const定义常量的区别详解
Jun 25 PHP
PHP实现一个限制实例化次数的类示例
Sep 16 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
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
js活用事件触发对象动作
2008/08/10 Javascript
js 函数的副作用分析
2011/08/23 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
webpack-mvc 传统多页面组件化开发详解
2019/05/07 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
简单学习Python多进程Multiprocessing
2017/08/29 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
python 动态绘制爱心的示例
2020/09/27 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
实习生自我鉴定范文
2013/12/05 职场文书
初中学生期末评语
2014/04/24 职场文书
出国签证在职证明
2014/09/20 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
合同范本之电脑出租
2019/08/13 职场文书
html+css合并表格边框的示例代码
2021/03/31 HTML / CSS
粗暴解决CUDA out of memory的问题
2021/05/22 Python
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript