CodeIgniter学习笔记 Item10--CI总结精华_ci foreach($item[‘children‘]

扩展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)



我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。

首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。



更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。
找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。
最后,祝愿大家在这并不友好的环境下都能找到自己心仪的归宿。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值