CI框架中一些关键问题
上传图片
model
public function upload()
{
// 把需要的配置放入config数组
$config['upload_path'] = './uploads';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '102400';
$this -> load -> library('upload', $config); //调用CI的upload类
$this -> upload -> do_upload('upfile'); //使用do_upload('上传框的name')方法进行上传
if ($this -> upload -> do_upload('upfile')) { //上传成功
$data = array('upload_data' => $this -> upload -> data()); //将文件信息存入数组
$file = $data['upload_data']['file_name'];
return $file;
}
return null;
}
controller
public function upload()
{
$file = $this->blog_model->upload();
//把文件名插入数据库
redirect('blog/lists', 'refresh');
}
我们只要再view上上传我的图片,图片就会被上传了,CI框架还过滤了文件类型,不知道它是如何过滤文件后缀的,但一般的文件上传漏洞应该是没有了
分页
model
public function get_blogs_zan($gid=0,$num="")
{
$this->db->limit($num,$gid);//$this->db->limit(10,15); 每条10条,从15条开始
$query = $this->db->get('blogs');
return $query->result_array();
}
controller
public function lists($gid)
{
$this->load->library('pagination');
$config['base_url'] = base_url().'index.php/blog/lists';//默认访问的地址
$config['total_rows'] = $this->db->count_all('blogs');
$config['per_page'] = '5';
$config['full_tag_open'] = '<p>';
$config['full_tag_close'] = '</p>';
$config['first_link'] = '首页';
$config['last_link'] = '尾页';
$this->pagination->initialize($config);
//传参数给VIEW
$data['page_links'] = $this->pagination->create_links();
//再次查询,得到需要显示的数据
$data['blogs'] = $this->blog_model->get_blogs_zan($gid,$config['per_page']);
$this->load->view('blog/blog_list', $data);
}
view
<div class="page" align="center">
<div id="pagelist" align="center">
<span><?php echo $page_links; ?>
</span>
</div>
</div>
现在的分页不好看,我们加上css代码
#page{
align-content: center;
}
#pagelist
{
align-content: center;
border-top:1px solid #dfdfdf; padding-top: 10px; text-align: center; margin-bottom: 10px; font-size: 14px;
}
#pagelist span strong{
margin: 0 5px 0 0; padding: 3px 6px; border: 1px solid #D1D1D1;
}
#pagelist span a{
margin: 0 5px 0 0; padding: 3px 6px; border: 1px solid #D1D1D1;
}
CI框架分页是很简单的,使用也很方便,需要注意的是我们引入css文件要在根目录下,也就是ci目录下我们才能直接访问,不过者也是安全的,我们可以把重要的文件放置不能直接访问的路径下,防止重要信息让别人知道
富文本框
不属于CI框架的范围,不过我在博客中使用了就总结一下
我用的是ckeditor,比较方便
在代码中引入了js文件后,只需要很少的代码就可以了
<textarea id="editor1" name="contents"><p>请输入文章内容</p></textarea>
<script type="text/javascript">
CKEDITOR.replace( 'editor1' );
</script>
我们在程序中接受contents值就包括了html标签了,不过没有进行标签过滤,应该要对一些敏感的标签进行过滤,我会不断完善