扩展CI控制器
application/core/MY_Controller.php
控制器就要以继承自MY_Controller
可以在自定义的控制器中扩展一些类。
application/config/config.php
$config['subclass_prefix'] = 'MY_';
模型
继承自CI_Model
在模型中,可以直接使用超级对象中的属性
文件名,全小写
类名首字母大写
建议使用_model作为后缀,防和控制器类名冲突
控制器要什么数据,model就写一个方法,model提供数据。
url相关函数
$this->load->helper('url');
//可以根需要配置自动加载
//application/config/autoload.php
//$autoload['helper'] = array('url');
site_url('控制器/方法')
base_url()//index.php的主入口。
路由
application/config/routes.php
//默认控制器
$route['default_controller'] = "welcome";
//http://localhost/ci/index.php/news/201309/4.html
$route['news/[\d]{6}/([\d]+)\.html']='article/show/$1';
隐藏入口文件
开始apache的rewrite模块,在httpd.conf文件中
LoadModule rewrite_module modules/mod_rewrite.so
重启apache
在入口文件同级目录中,放入一个.htaccess文件
内容如下:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
分页
//装载类文件
$this->load->library('pagination');
$this->load->helper('url');
//每页显示10条数据
$page_size=10;
$config['base_url'] =site_url('user/test');
//一共有多少条数据
$config['total_rows'] = 100;
//每页显示条数
$config['per_page'] = $page_size;
$config['first_link'] = '首页';
$config['next_link'] = '下一页';
$config['uri_segment']=3;//分页的数据查询偏移量在哪一段上
$this->pagination->initialize($config);
$offset=intval($this->uri->segment(3));//与$config['uri_segment']对应
$sql="select * from blog_user limit $offset, $page_size";
echo $sql;
$data['links']=$this->pagination->create_links();
$this->load->view('user/test',$data);
文件上传
1.手动创建好上传目录
<form action="<?php echo site_url('user/upload')?>" method="post" enctype="multipart/form-data">
<input type="file" name="pic" />
<input type="submit" value="上传" >
</form>
//上传目录需要手工创建
$config['upload_path']='./uploads/';
//允许
$config['allowed_types']='gif|png|jpg|jpeg';
$config['max_size'] = '10000';
//生成新文件名
$config['file_name']=uniqid();
//装载文件上传类
$this->load->library('upload',$config);
$this->upload->do_upload('pic');
var_dump($this->upload->data());
//获取上传之后的数据
$data=$this->upload->data();
echo $data['file_name'];
验证码
//生成一个随机不重复的字符串作为加密用的key
//保存到application/config/config.php
//$config['encryption_key'] = 'adb8bf6d0ac4e17b42a80941582497a4';
//echo md5(uniqid());exit;
$this->load->library('session');
$user=array('id'=>3,'name'=>'jack');
//session_start();
//$_SESSION['user']=$user;
$this->session->set_userdata('user',$user);
//不在这这里获取刚放入的数据
//只有页在从新加载或跳转到别的url中,才能获取到
//一次性的数据,只能读取一次
$this->session->set_flashdata('test','aaaaaaaaaaaaaa');
}
public function show_session(){
$this->load->library('session');
//取CI session中的数据
$user=$this->session->userdata('user');
var_dump($user);
//下次刷新,就没有了
$test=$this->session->flashdata('test');
echo $test;
}
表单验证
$this->load->library('form\_validation');
$this->form_validation->set_rules('name', '用户名', 'required');
$this->form_validation->set_rules('email', '邮箱', 'valid\_email');
$bool=$this->form_validation->run();
if($bool){
//调用模型保存到数据库
}else{
//显示错误信息
$this->load->view('user/add');
}
<?php echo validation_errors();?>
<form action="<?php echo site\_url('user/insert');?>" method="post">
name <input type="text" name="name" value="<?php echo set\_value('name')?>" />
<?php echo form_error('name','<span>','</span>')?>
<br>
password <input type="password" name="password" /><br>
email <input type="text" name="email" value="<?php echo set\_value('email')?>" />
<?php echo form_error('email')?>
<br>
<input type="submit" value="submit" />
</form>
//生成一个随机不重复的字符串作为加密用的key
//保存到application/config/config.php
//$config['encryption\_key'] = 'adb8bf6d0ac4e17b42a80941582497a4';
//echo md5(uniqid());exit;
$this->load->library('session');
$user=array('id'=>3,'name'=>'jack');
//session\_start();
//$\_SESSION['user']=$user;
$this->session->set_userdata('user',$user);
//不在这这里获取刚放入的数据
//只有页在从新加载或跳转到别的url中,才能获取到
//一次性的数据,只能读取一次
$this->session->set_flashdata('test','aaaaaaaaaaaaaa');
}
public function show\_session(){
$this->load->library('session');
//取CI session中的数据
$user=$this->session->userdata('user');
var_dump($user);
//下次刷新,就没有了
$test=$this->session->flashdata('test');
echo $test;
}
表单验证
$this->load->library('form\_validation');
$this->form_validation->set_rules('name', '用户名', 'required');
$this->form_validation->set_rules('email', '邮箱', 'valid\_email');
$bool=$this->form_validation->run();
if($bool){
//调用模型保存到数据库
}else{
//显示错误信息
$this->load->view('user/add');
}
<?php echo validation_errors();?>
<form action="<?php echo site\_url('user/insert');?>" method="post">
name <input type="text" name="name" value="<?php echo set\_value('name')?>" />
<?php echo form_error('name','<span>','</span>')?>
<br>
password <input type="password" name="password" /><br>
email <input type="text" name="email" value="<?php echo set\_value('email')?>" />
<?php echo form_error('email')?>
<br>
<input type="submit" value="submit" />
</form>
最终user.php
<?php
class User extends CI\_Controller{
//连接数据库操作
public function showusers(){
//1.装载数据库操作类
$this->load->database();//可以传参,表示连接哪个数据库,在配置中配置多个数据库即可。
//装载成功后,可以用$this->db;
//var\_dump($this->db);
$sql = 'select \* from users';
$res = $this->db->query($sql);//msql\_query();
//var\_dump($res);
$users = $res->result();//返回对象数组;
//echo "<pre>";
//var\_dump($users);
// mysql\_fetch\_assoc(result);//关联数组
// mysql\_fetch\_object(result);//返回对象
// 在页面中将数据带过去
$data['user\_list'] = $users;
$this->load->view('user/showusers',$data);
}
public function add(){
$this->load->database();
$sql = "insert into users (id,name,password,age,sex) values (5,'xiao','34234',23,'男')";
$bool = $this->db->query($sql);
if($bool){
//mysql\_affected\_rows();
echo "受影响的行数:".$this->db->affected\_rows();
echo "自增id为:".$this->db->insert\_id();
}
}
public function insert(){
$data['id'] = 6;
$data['name'] = 'guo';
$sql = "insert into users (id, name) values(?,?)";
$bool = $this->db->query($sql,$data);
if($bool){
//mysql\_affected\_rows();
echo "受影响的行数:".$this->db->affected\_rows();
echo "自增id为:".$this->db->insert\_id();
}
}
//AR模型简化操作
public function get(){
//查询
// $res = $this->db->get('users');
// foreach ($res->result() as $item) {
// echo $item->name;
// echo "<br>";
// }
//增加
/\*$data = array(
'id'=>8,
'name'=>'xiaoxiao',
'sex'=>'男'
);
$bool = $this->db->insert('users',$data);
var\_dump($bool);\*/
//改
/\*$data = array(
'name'=>'果果',
'sex'=>'女',
'age'=>44
);
$bool = $this->db->update('users',$data,array('id'=>1));
var\_dump($bool);\*/
//删
// $bool = $this->db->delete('users',array('id'=>0));
// var\_dump($bool);
// select id, name, age,sex,from users where id <=5 order by id desc limit 2,3;
$res = $this->db->select('id','name','age','sex')
->from('users')
->where('id <=5')
->order\_by('id desc')
->limit(3,2)
->get();
var\_dump($res->result());
}
// private function \_test(){
// echo "string";
// }
public function index(){
//$this->\_test();
// $this->load->view('user\_index');
$list = array(
array('id'=>1, 'name'=>'xiao', 'email'=>'xiao@gmail.com'),
array('id'=>2, 'name'=>'guo', 'email'=>'guo@gmail.com'),
array('id'=>3, 'name'=>'ping', 'email'=>'ping@gmail.com'),
);
//标量分配,在视图中直接可以$title.获得变量
//$this->load->vars('title','这是标题');
$data['title'] = '这是标题';
//分配多个变量
$data['list'] = $list;
//设置为了关联数组,$title和$list;
$this->load->vars($data);
$this->load->view('header');
$this->load->view('user/index');
echo $this->uri->segment(1);
}
// public function user(){
// echo "user控制器的user方法<br>";
// }
// public function user2(){
// echo "user控制器的user2方法<br>";
// }
public function model(){
//装载模型
// $this->load->model('User\_model','user');
// //调用模型数据
// $list = $this->user->getAllUser();
// //视图显示
// $this->load->view('user/index2.php',array('list'=>$list));
//加载函数
$this->load->helper('url');
$this->load->view('user\_index');
}
public function submit(){
var\_dump($this->input->post('name'));
}
// 文件上传类
public function file(){
$this->load->helper('url');
$this->load->view('user/file');
}
public function upload(){
$config['upload\_path'] = './uploads/';
$config['allowed\_types'] = 'gif|jpg|png';
$config['max\_size'] = '10000';
$config['file\_name'] = uniqid();
$this->load->library('upload', $config);
$this->upload->do\_upload('pic');
$data = $this->upload->data();
echo $data['file\_name'];
//$this->upload->initialize($config);
}
public function init(){
// 生成一个随机不重复的字符串,用于加密
// 保存到$config['encryption\_key']
// echo md5(uniqid());exit;
$this->load->library('session');
$user = array('id'=>3,'name'=>'jack');
// session\_start();
// $\_session['user'] = $user;
$this->session->set\_userdata('user',$user);
// 不在这里获取刚放入的数据,只有页面
// 在重新加载或跳转到别的页面时,才能获取
$this->session->set\_flashdata('test','aaaaa');
}
public function show\_session(){
$this->load->library('session');
$user = $this->session->userdata('user');
var\_dump($user);
$test = $this->session->flashdata('test');
echo $test;
}
public function captcha(){
$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' => 30,
'expiration' => 5
);
$cap = create\_captcha($vals);
**前端资料汇总**
![](https://img-blog.csdnimg.cn/img_convert/6e0ba223f65e063db5b1b4b6aa26129a.png)
我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。
首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。
更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。
找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。
最后,祝愿大家在这并不友好的环境下都能找到自己心仪的归宿。