<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ~~~ Yii CI ThinkPHP ZF ===================================== CodeIgniter框架 ===================================== 講師:鄒義良 微博:weibo.com/it266 ------------------------------------- 主要內容 CI簡介 深入MVC設計模式 CI中控制器與視圖 CI的超級對象 數據庫訪問 AR模型 如何擴展CI的控制器 模型 url相關函數 設置路由 隱藏入口文件 分頁 文件上傳 Session 驗證碼 表單驗證 ------------------------------------- CI是什么? CodeIgniter是一個輕量級但功能強大的PHP框架 基于MVC設計模式,提供了一套豐富的類庫 簡單易學,高效實用 官方網站 www.codeigniter.com 中文網站 http://codeigniter.org.cn 下載當前最新版本 CodeIgniter_2.1.4.zip 有什么特點? 你想要一個小巧的框架 你需要出色的性能 你需要廣泛兼容標準主機上的各種 PHP 版本和配置 CI 2.1.4 需要 PHP5.1.6 你想要一個幾乎只需 0 配置的框架 你想要一個不需使用命令行的框架 你想要一個不需堅守限制性編碼規則的框架 你不希望被迫學習一門模板語言(雖然可以選擇你喜歡的模板解析器) 你不喜歡復雜,熱愛簡單 你需要清晰、完整的文檔 目錄結構說明 license.txt 許可協議 user_guide 用戶手冊 system 框架核心文件 application 應用目錄 index.php 入口文件 ------------------------------ MVC 1.入口文件 唯一一個讓瀏覽器直接請求的腳本文件 2.控制器controller 協調模型和視圖 3.模型model 提供數據,保存數據 4.視圖view 只負責顯示 表單... 5.動作action 是控制器中方法,用于被瀏覽器請求 CI中的MVC 訪問url使用的是pathinfo 入口文件.php/控制器/動作 application目錄中: controllers 控制器 models 模型 views 視圖 默認控制器是welcome 默認動作是index 控制器 1.不需要加后綴 2.文件名全部小寫 例如 user.php 3.所有的控制器,直接或間接繼承自CI_Controller類 4.控制器中,對動作(方法)要求: public 不能以_開頭 視圖 1.在控制器中如果加載視圖 //直接寫視圖名字,不寫擴展名,如果有子目錄,則寫上目錄名 $this->load->view(視圖); 可以多次調用$this->load->view(視圖); 2.視圖中,直接使用原生php代碼 3.推薦使用 <?php foreach($list as $item):?> <?=$item['name']?> <?php endforeach;?> 超級對象 當前的控制器對象 提供了很多屬性: $this->load 裝載器類的實例system/core/Loader.php 裝載器類提供方法: view() 裝載視圖 vars() 分配變量到視圖 database() 裝載數據庫操作對象 model() 裝載模型對象 helper() $this->uri 是CI_URI類的實例 system/core/URI.php CI_URI類提供方法: segment(n) 用于獲取url中的第n個參數(值) 傳統的:入口文件.php/控制器/動作/參數1/值1/參數2/值2 入口文件.php/控制器/動作/值1/值2 echo $this->segment(3);//值1 echo $this->segment(4);//值2 //index.php/控制器/index/6 public function index($p=0){ echo $p;//輸出6 } $this->input 輸入類 是CI_Input類的實例 system/core/Input.php CI_Input類提供方法: $this->input->post('username'); //$_POST['username'] $this->input->server('DOCUMENT_ROOT'); //$_SERVER['DOCUMENT_ROOT'] 在視圖中,直接用$this來訪問超級對象中的屬性 數據庫訪問 修改配置文件 application/config/database.php 將數據庫訪問對象,裝載到超級對象的屬性中 $this->db $this->load->database(); $res=$this->db->query($sql);//返回對象 $res->result();//返回數組,數組中是一個一個的對象 $res->result_array();//返回二維數組,里面是關聯數組 $res->row()//返回第一條數據,直接是一個對象 參數綁定 $sql="select * from blog_user where name=?"; $this->db->query($sql,$name);//如果有多個問號時,需要傳入一個索引數組 表前綴 $db['default']['dbprefix'] = 'blog_'; $db['default']['swap_pre'] = 'blog_'; 配置為一樣,代碼中,直接硬編碼表前綴就行了,如果以后項目數據庫表前綴發生變化, 只需要修改$db['default']['dbprefix'] = 'new_';代碼中的blog_會自動替換為new_ db的自動加載 application/config/autoload.php $autoload['libraries'] = array('database'); 不需要:$this->load->database(); 自增id $this->db->insert_id(); 受影響行數 $this->db->affected_rows(); Active Record 1.application/config/database.php $active_record = TRUE; 2.application/config/autoload.php $autoload['libraries'] = array('database'); 3.在配置文件中,配置表前綴后,會自動添加 $res=$this->db->get('表名');//返回結果集對象 $res->result(); $bool=$this->db->insert('表名',關聯數組); $bool=$this->db->update('表名',關聯數組,條件); $bool=$this->db->delete('表名',條件); //select id,name from tableName where id>=3 order by id desc limit 2,3 $res=$this->db->select('id,name') ->from('user') ->where('id >=',3) ->limit(3,2)//跳過2條,取出3條數據 ->order_by('id desc ') ->get(); //顯示最近一條SQL echo $this->db->last_query(); //where //$res=$this->db->where('name','mary')->get('user'); //$res=$this->db->where('name !=','mary')->get('user'); //$res=$this->db->where(array('name'=>'mary'))->get('user'); //$res=$this->db->where(array('name'=>'mary','id >'=>2))->get('user'); 復雜的查詢,請用$this->db->query($sql,$data);//使用問號綁定參數 擴展CI控制器 application/core/MY_Controller.php 控制器就要以繼承自MY_Controller application/config/config.php $config['subclass_prefix'] = 'MY_'; 模型 繼承自CI_Model 在模型中,可以直接使用超級對象中的屬性 文件名,全小寫 類名首字母大寫 建議使用_model作為后綴,防和控制器類名沖突 url相關函數 $this->load->helper('url'); //可以根需要配置自動加載 //application/config/autoload.php //$autoload['helper'] = array('url'); site_url('控制器/方法') base_url() 路由 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> ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看