一.CI框架的指定URL操作
除了常规的Module/Controller/Action外,我们还可以在Application/config/routes.php 配置指定的操作:
1.指定跳转:
$route['abc'] = 'test';
当输入abc时指定跳转到test控制器;
2.复杂跳转:
$route['abc/(:any)']['put'] = 'test/index/$1';
1.:any表示后面必须接入任何东西;
2.[‘put’]表示只有put请求才会跳转;
3.’test/index/$1 表示跳转到test 控制器执行index动作,传入参数$1(即输入的:any);
3.匹配正则跳转:
$route['abc/[a-z]+/(\d+)'] = 'test/index/$1/$2';
1.后面第一个必须至少是一个以上的字母,第二个必须是至少有一个以上的数字;
2.$1和$2可以同时传过去;
4.回调函数跳转:
$route['abc/(\d+)'] = function($id){
return 'test/index/$id';
}
二.CI的数据库操作
1.基本query操作
$this->load->database();
//载入数据库
$res = $this->load->query($sql);
//执行sql语句,返回一个对象
$list = $res->result();
//获取结果集,对象,如果要取得数组,则用result_array();
2.AR操作
注:3.0之后,active record已经被改写成query_builder
首先在config/database.php里面设置
,默认是false
$query_builder=TRUE
1.增
$this->db->insert('table_name' , $insert_data)
$insert_data是数组
2.删
$this->db->delete('table_name' , $where);
$where是数组
3.改
$this->db->update('$table_name' , $update_data , $where)
4.查
$this->db->get('$table_name')
3.连贯操作
$res = $this->db->select('id,name')
->from('user')
->where('id >=' , )
->limit(,)
->order_by('id')
->get()
->result();
1.select里面是取出的字段;
2.limit()里面的两个数字和数据库的Limit是相反的,limit(3,2)代表跨过前两条,取得三条数据
三.分页
$this->load->library('pagination');
//载入分页类库
$config['per_page'] = ;
//每页显示数量
$config['total_rows'] = ;
//总共的数量
$config['first_link'] = '首页';
$config['last_link'] = '尾页';
//首尾页显示形式
$config['prev_link'] = '上一页';
$config['next_link'] = '下一页';
//上下页页显示形式
$config['base_url'] = site_url('test/page');
//url基本路径
$this->pagination->initialize($config);
//初始化
$page_list = $this->pagination->create_link();
//得到分页信息
$this->load->view('page' , ['page_list'=>$page_list]);
四.文件上传
$config['max_size'] = ;
//设置上传文件的大小
$config['upload_path'] = base_url() . 'uploads';
//设置上传的目录
$config['file_name'] = uniqid();
//设置上传的名称是唯一的
$config['allowed_types'] = 'jpg|jpeg|png|gif';
//设置允许的类型
$this->load->library('upload' , $config );
//载入upload类库
if($this->upload->do_upload('pic')){
//上传成功
var_dump($this->upload->data());
}else{
var_dump($this->upload->display_errors());
}
五.session
注:1.开启session类库时,首先要对session存放的位置进行设置,在application/config/config下:2.设置加密key,z在application/config/config下:
$config['sess_save_path'] = FCPATH . 'public/sess_save_path';
$config['encryption_key'] = 'djskdjsk';
$this->load->library('session');
//载入session类库
$this->session->set_userdata('user' , $user);
//设置session
$this->session->set_flashdata('hello' , 'world');
//设置只生效一次的session
$this->session->userdata('user');
//获取
$this->session->unset_userdata('user');
//删除
六.表单验证
$this->load->library('form_validation');
//载入
$this->form_validation->set_rules('user' , 'user' , 'required|min_length[5]|is_uniqued['user.user']',[
'required' => '必须唯一',
'min_length' => '长度不够',
'is_unquied' => '已经被注册'
]);
//设置相应的规则
$res = $this->form_validation->run();
if($res){
//验证通过
}else{
//验证失败
$this->load->view('abc/test');
}
//其实此时可以用作其他框架里面的是否有post来用一个动作完成不同的逻辑
//模板层:
echo validation_errors();//输出所有错误信息
echo set_value('name');//获取上一次输入的信息
echo form_error('name');//获取当前文本的错误信息
七.验证码
$this->load->helper('captcha');
$config = [
'word' => 'hello',
'img_path' => './captcha/',
//存储验证码图片的本地位置
'img_url' => base_url() . 'captcha/',
//验证码url的路径
];
$cap = create_captcha($config);