一、下载CI框架并安装,这里放置一张自己的项目目录结构图

目录框架搭建好之后开始将自己的项目与框架融合

二、更改相关配置

1、用任何文本编辑器打开 application/config/config.php 去设置你的网站根 URL

    $config['base_url'] = 'http://localhost/项目所在文件夹名/'

2、打开 application/config/database.php 去设置你的数据库参数

    $db['default']['username'] = '数据库用户名';

$db['default']['password'] = '数据库密码';

$db['default']['database'] = '数据库名';

     3、打开 application/config/routes.php 去设置网页默认首先打开的控制器

          $route['default_controller'] = "former";  //这里我设置的默认是先去找到former控制器,所以他会先去执行former控制器中的index方法

三、框架与项目融合

application/controllers中放置前后台控制器,与模型和视图交互

application/models中放置前后台模型,就是获取数据库信息将数据传给控制器的地方

application/view中放置视图,建former(前台)和admin(后台)两个文件夹,放置前后台视图,此项目我只用到了前台former,没有写后台,数据直接与前台交互查询了

四、简要一些方法的代码实例

     显示相关视图

function index(){
  $this->load->view("former/index"); //调用former控制其中index方法,就可以显示former文件夹下index视图,注意区分前后former和index的不同
}

  登录

视图中关键的依据

<form id="loginForm" method="post" action="<?php echo site_url('former/check_login')?>">

 //控制器中的方法
function login(){
$data['tips']=null;
$this->load->view("former/login",$data);
} function check_login(){
//判断是否提交数据 //获取提交的用户名和密码,排除特殊字符
$name=$this->input->post("name");
$pwd=$this->input->post("pwd");
//获取提交的用户名和密码,排除特殊字符
$this->load->model("former_model");
$result=$this->former_model->check_login();
//验证
foreach ($result as $value){
$username=$value->name;
$password=$value->pwd;
$iuser_id=$value->id;
}
if(empty($result)){
$data['error']="用户名或密码错误!";
$this->load->view("former/login",$data);
}else if (md5($pwd)!=$password){
$data['error']="密码错误!";
$this->load->view("former/login",$data);
}else{
$this->session->set_userdata('iuser_pwd',$pwd); //传递一个新的用户数组到 session 数组中
$this->session->set_userdata('iuser_name',$name);
$this->session->set_userdata('iuser_id',$iuser_id);
redirect('former/upload');
}

控制器中方法  

 function check_login(){
//获取提交的用户名和密码,排除特殊字符
$name=$this->input->post("name");
$pwd=$this->input->post("pwd");
$name=$this->check_input($name);
// echo $name.'--'.$pwd;exit;
$pwd=md5($this->check_input($pwd));
$query=$this->db->query("SELECT * FROM iuser WHERE name='$name' AND pwd='$pwd'");
return $query->result();
} function check_input($input){
//去除斜杠
if(get_magic_quotes_gpc()){
$input=stripslashes($input);
//$data['error']="000!";
}
$input=mysql_real_escape_string($input);
return $input;
}

models内

上传照片

     //上传图片
function upload_photo(){
//判断是否登录
$iuser_id=$this->session->userdata('iuser_id');
if (!isset($iuser_id)||$iuser_id!=1){
$data['error']="请先登录!";
$this->load->view("former/login",$data);
}else{
$this->load->model('former_model');
$config['upload_path']='upload/image/'; /*存储路径,这里的upload是相对于index.php入口文件*/
$config['allowed_types']='jpg|gif|img|png|jpeg'; //允许上传的格式
$config['max_size']='100000'; //允许上传大小
$config['file_name']=date("YmdHis",time()).'_'.$iuser_id; //根据这里设置的文件名来对上传的文件进行重命名。文件名中的扩展名也必须是允许的文件类型
$this->load->library('upload',$config);
//if(isset($_POST)){
if(!$this->upload->do_upload()){
$error=$this->upload->display_errors();
$this->alert_tips($error, "-1");
}else{
$data['upload_data']=$this->upload->data(); //一个辅助函数,它返回你上传文件的所有相关信息的数组
$data['img_url']=$config['upload_path'].$config['file_name'].$data['upload_data']['file_ext'];
$result=$this->former_model->upload_photo($iuser_id,$data['img_url']);
//$data['pic_url']=$this->former_model->get_picture();
if($result==true){
//$data['one_article']=$this->former_model->get_one_article($cid);
$data['pic_url']=$this->former_model->get_picture();
$this->load->view('former/picture',$data);
}else{
$this->alert_tips("发生未知错误,上传照片失败", "-1");
}
}
}
}

控制器

 function upload_photo($iuser_id,$img_url){
$name=$this->input->post("name");
//$img_url=$this->input->post("img_url");
$date=date("Y-m-d",time());
$describe=$this->input->post("describe"); $data=array(
"iuser_id"=>$iuser_id,
"name"=>$name,
"url"=>$img_url,
"date"=>$date,
"describe"=>$describe
);
$query=$this->db->insert("photos",$data); //echo $query;exit;
if($query){
$flag=true;
}else{
$flag=false;
}
return $flag;
} function get_picture(){
$query=$this->db->query("SELECT * FROM photos");
return $query->result();
}

models

 <?php foreach($pic_url as $value):?>
<li>
<img src="<?php echo $value->url;?>" />
<span><?php echo $value->name;?></span>
<span class="hidden" ><img src="<?php echo $value->url;?>" /><div><?php echo $value->describe;?></div>
</span>
</li>
<?php endforeach;?>

视图数据输出

这都是一些简要的基础方法,但后台都是基于这些基础想通过各种变换,大致形式都一样,所以大致明白这些差不多都能融会贯通,另外,要多学会看报错的信息,通过信息去查找自己的错误地方,

就是因为错误才有机会改正,有时候始终找不到问题出错地方,他也不报错这是很痛苦的一种情况,哈哈,所以有错误提示也是一种幸福。

初学后台框架总结篇二——快速了解CI框架的更多相关文章

  1. 《一头扎进》系列之Python+Selenium框架设计篇3- 价值好几K的框架,狼来了,狼来了....,狼没来,框架真的来了

    1. 简介 前边宏哥一边一边的喊框架,就如同一边一边的喊狼来了!狼来了!.....这回是狼没有来,框架真的来了.从本文开始宏哥将会一步一步介绍,如何从无到有地创建自己的第一个自动化测试框架.这一篇,我 ...

  2. 《一头扎进》系列之Python+Selenium框架设计篇4- 价值好几K的框架,呵!这个框架有点意思啊

    1.简介 前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM.关于基类,是这样定义的:把一些常见的页面操作的selenium封装到bas ...

  3. Python+Selenium框架设计篇之-什么是自动化测试框架

    1.什么是自动化测试框架 简单来说,自动化测试框架就是由一些标准,协议,规则组成,提供脚本运行的环境.自动化测试框架能够提供很多便利给用户高效完成一些事情,例如,结构清晰开发脚本,多种方式.平台执行脚 ...

  4. 《一头扎进》系列之Python+Selenium框架设计篇1-什么是自动化测试框架-价值好几K的框架,不看别后悔,过时不候

    1. 什么是自动化测试框架 在了解什么是自动化测试框架之前,先了解一下什么叫框架?框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法:另一种定义认为,框架是可被应用开发者定制的 ...

  5. 《一头扎进》系列之Python+Selenium框架设计篇2- 价值好几K的框架,不看白不看,看了还想看

    1. 简介 上一篇介绍了自动化框架的架构,今天宏哥就带领小伙伴或者童鞋们开始开工往这个框架里开始添砖加瓦.主要是介绍一个框架unittest单元测试框架和一种设计思想POM. 2. unittest单 ...

  6. 二十七、CI框架之自己写分页类并加载(写分页还是有难度,搞了一整天)

    一.我们写好自己的分页代码,防止library目录中,带构造函数 二.在模型中,添加2个函数,一个是查询数据的条数,第二个是取出数据库中的数据 三.在控制中,写入相应的代码,如下: 四.在界面中,写入 ...

  7. CI框架基本配置/教你学习CI框架codelgniter

    CI框架现在中国可以说还是不成熟,不像thinkphp那样有那么多的中文手册,在国内,很多国人英语都很烂,CI现在教程还是不多.大家心里都存在这严重想法 CI 框架现在中国可以说还是不成熟,不像thi ...

  8. CI框架从哪里看起?CI框架怎么开始学习,CI的初始设置

    很多朋友不知道CI框架从哪里开始学起,想学一个新的框架其实并不难.只要你认真研究,自习摸索都很简单! 概述和基本配置参数 配置CI: application/config/config.php:14配 ...

  9. CI框架对HTML输入的处理/CI框架引用ueditor时对提交内容的默认处理

    项目里近期用到了富文本编辑器,可是写入数据的时候总是写入, <p xss="removed">内容</p> 所有的样式都会被改写成这样,xss=" ...

随机推荐

  1. Andrew Ng在coursera上的ML课程_知识点笔记_(1)

    1.Feature Scaling(特征缩放): 如上图所示,x1是房屋面积,x2是房间个数,若不进行特征缩放,则代价函数J的曲线近似为一个瘦长的椭圆(我暂时这么理解,θ1和θ2分别是x1和x2的权值 ...

  2. IDEA tomcat乱码

    在运行/调试 配置对话框的Startup/Connection面板中, 勾选Pass environment variables. 并添加一个environment variable, Name填 J ...

  3. 在Ubuntu 14.04安装和使用Docker

    Docker是一个开源软件,它可以把一个Linux应用和它所依赖的一切(比如配置文件)都封装到一个容器.然而,Docker与虚拟机不同,它使用了沙箱机制,Docker容器不运行操作系统,它共享主机上的 ...

  4. StringUtils中 isNotEmpty 和isNotBlank的区别

    isNotEmpty : 判断某字符串是否非空 StringUtils.isNotEmpty(null) = false StringUtils.isNotEmpty("") = ...

  5. [转]VS2012 快捷键

    Ctrl+E,D ----格式化全部代码       Ctrl+A+K+F Ctrl+E,F ----格式化选中的代码     Ctrl+K+F CTRL + SHIFT + B生成解决方案   Al ...

  6. jquery mobile

    页面:data-role="page"  header.content.fooder 过渡:data-transition ="slide"  反向过渡:dat ...

  7. Atom使用记录(持续更新中)

    部分内容取自:http://www.jianshu.com/p/dd97cbb3c22d,我自己也在使用,持续更新中 Atom安装插件在窗口中File---Setting---install 在里面进 ...

  8. MYsql 数据库密码忘记(Linux)

    在Linux 上面装上了 Mysql 数据库,但是发现密码忘了,悲催,解决方法跟Window系统下一样的, 不管是哪个操作系统处理的思路是相同的,就是首先要把mysql的权限去掉,这样即使忘了密码,不 ...

  9. 数据复制与AA双活(1)

    最开始有些概念需要弄明白: 1. 什么是RPO? Wiki: https://en.wikipedia.org/wiki/Recovery_point_objective A recovery poi ...

  10. 恶意软件伪装“正规军”,撕开Booster Cleaner“画皮”下的真相

    经常使用手机浏览器阅读小说的用户都知道,在浏览器页面经常会出现一些推广游戏应用.手机清理应用等应用的弹窗广告.有时出于方便,我们也会选择直接点开这些弹窗广告进行应用下载.但这种行为并不安全,部分恶意应 ...