日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php框架 > codeigniter > CodeIgniter學(xué)習(xí)筆記總匯

CodeIgniter學(xué)習(xí)筆記總匯

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-09-08 18:51:44 閱讀次數(shù):3847次

一、CodeIgniter 控制 Frameset 或 Iframe

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <frameset rows="98,*,8" cols="*" framespacing="0" frameborder="NO" border="0" id="mainset"> <frame src="./application/views/top.php" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" /> <frameset rows="*,0" cols="*" framespacing="0" frameborder="NO" scrolling="no" border="0" id="fset3"> <frame src="./application/views/middle.php" name="mainFrame" id="mainFrame" /> <frame src="about:blank" name="download" scrolling="NO" noresize> </frameset> <frame src="./application/views/down.php" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomFrame" /> </frameset> <noframes> </head> <body></body> </noframes> </html>

以上代碼是初學(xué)者容易出錯(cuò)的地方。這里說(shuō)明一下:視圖不能直接調(diào)用!視圖需要由控制器來(lái)調(diào)用。視圖可以嵌套視圖,但不能用 src="" 這種方式嵌套。

正確寫(xiě)法如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <frameset rows="98,*,8" cols="*" framespacing="0" frameborder="NO" border="0" id="mainset"> <frame src="<?php echo site_url();?>/welcome/top" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" /> <frameset rows="*,0" cols="*" framespacing="0" frameborder="NO" scrolling="no" border="0" id="fset3"> <frame src="<?php echo site_url();?>/welcome/middle/public" name="mainFrame" id="mainFrame" /> <frame src="about:blank" name="download" scrolling="NO" noresize> </frameset> <frame src="<?php echo site_url();?>/welcome/down" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomFrame" /> </frameset> <noframes> </head> <body></body> </noframes> </html>

welcome控制器代碼

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('index'); } public function frameMain(){ $this->load->view('frameMain'); } public function top(){ $this->load->view('top'); } public function middle($folder='public'){ $data['folder']=$folder; $this->load->view('middle',$data); } public function left($folder='public'){ $this->load->view($folder.'/left'); } public function right($folder='public'){ $this->load->view($folder.'/managerlog'); } public function down(){ $this->load->view('down'); } }

問(wèn)題來(lái)源:http://codeigniter.org.cn/forums/thread-82-1-1.html

小知識(shí)補(bǔ)充:

使用 site_url() 函數(shù),需要加載 url helper

site_url() 的值為:網(wǎng)站URL+主入口文件。比如http://www.abc.com/wisky/index.php。注意,結(jié)尾沒(méi)有 /

網(wǎng)站URL就是 application/config/config.php 中 $config['base_url'] 定義的URL

上面的例子中我寫(xiě)的是:

src="<?php echo site_url();?>/welcome/middle/public"

也可以寫(xiě)成:

src="<?php echo site_url('welcome/middle/public');?>"

二、模板中的資源路徑

對(duì)于模板中的資源路徑問(wèn)題,對(duì)于初學(xué)者來(lái)說(shuō)比較麻煩。這里有一個(gè)非常有用的方法。就是在head區(qū)域中添加以下代碼:

<base href="<?php echo base_url();?>" />

然后,頁(yè)面中所有的資源(比如圖片、js等)都可以用相對(duì)路徑。這個(gè)相對(duì)路徑是針對(duì)在application/config/config.php文件中的:

$config['base_url'] = 'http://www.abc.com/wisky/';

這個(gè)路徑定義而言的。html base 標(biāo)簽的 href 屬性介紹

注意:使用 base_url()函數(shù)也要加載 url helper。

url helper詳細(xì)內(nèi)容請(qǐng)?jiān)L問(wèn):http://codeigniter.org.cn/user_guide/helpers/url_helper.html

三、關(guān)于AR的where查詢

$this->db->where(),該函數(shù)可允許使用四種方法中的一種來(lái)設(shè)置where子句。這里要特別做出說(shuō)明的是采用第四種方法:自定義字符串

官方的例子如下:

$where = "name='Joe' AND status='boss' OR status='active'"; $this->db->where($where);

要說(shuō)明的是,這樣的寫(xiě)法是錯(cuò)誤的。

在幾天前通過(guò)CI寫(xiě)了個(gè)簡(jiǎn)單的blog,因此稍微改動(dòng)一下該代碼,來(lái)驗(yàn)證上述方法的錯(cuò)誤。在blog程序中,本來(lái)顯示blog所有文章這一功能,我加上了where子句,用的是“自定義字符串”的方法。具體模型中的代碼如下:

function get_blog_all(){ $where = "title='這是標(biāo)題' AND id=1"; $this->db->where($where); $query=$this->db->get('blog'); //return $query->result_array();//返回?cái)?shù)組 return $query->result();//返回對(duì)象 }

得到如下結(jié)果:

A Database Error Occurred Error Number: 1054 Unknown column 'title='這是標(biāo)題'' in 'where clause' SELECT * FROM (`blog`) WHERE `title='這是標(biāo)題'` AND id=1 Filename: D:BaiduYunWEBwwwrootstudyCIsystemdatabaseDB_driver.php Line Number: 330

分析錯(cuò)誤代碼,其中生成的sql語(yǔ)句說(shuō)明了錯(cuò)誤原因。

SELECT * FROM (`blog`) WHERE `title='這是標(biāo)題'` AND id=1

看上面的where子句,你就知道通過(guò)“自定義字符串”構(gòu)建where子句,并沒(méi)有如官方所舉的例子。

接著,官方的文檔下面有如下說(shuō)明:

$this->db->where() 接受可選的第三個(gè)參數(shù)。如果你將它設(shè)置為 FALSE, CodeIgniter 不會(huì)為你那些包含反勾號(hào)的字段名或表名提供保護(hù)。

這句話描述的,的確一開(kāi)始讓人莫不著頭腦。他的實(shí)際意思是。正常情況下,CI內(nèi)部對(duì)所有值都會(huì)自動(dòng)轉(zhuǎn)義,以便生成安全的查詢。比如在PHP中,與數(shù)據(jù)庫(kù)打交道的操作,我們都會(huì)處理一些特殊字符,否則容易產(chǎn)生錯(cuò)誤或被他人利用并注入。然而CI自動(dòng)為我們做了這些。正如上面所述,如果將第三個(gè)參數(shù)設(shè)置為FALSE,那么CI不會(huì)這么做,確保安全就只得由我們自己把握了。這有時(shí)候很有用(稍后說(shuō)明)。

所以,我將代碼改為:

function get_blog_all(){ $where = "title='這是標(biāo)題' AND id=1"; $this->db->where($where,null,false); $query=$this->db->get('blog'); //return $query->result_array();//返回?cái)?shù)組 return $query->result();//返回對(duì)象 }

這樣就OK了。

上面說(shuō)過(guò),將第三個(gè)參數(shù)設(shè)置為FALSE,有時(shí)很有用。其實(shí)這個(gè)參數(shù)并不是where中才有,$this->db->set()中也有。

在看一個(gè)例子:

public function chklogin($name,$pwd){ //'name="'.$name.'" and pwd="'.$pwd.'"' $this->db->select('id,name')->from('manager')->where(array('name'=>$name,'pwd'=>$pwd))->limit(1); $query=$this->db->get(); $obj=$query->row(); if($obj){ $this->db->set('ip',$this->input->ip_address()); $this->db->set('time','CURRENT_TIMESTAMP',false);//主要說(shuō)明這一句 $this->db->where('id',$obj->id); $this->db->update('manager'); $this->db->set('ip',$this->input->ip_address()); $this->db->set('log','帳號(hào)為〖'.$name.'〗的管理員成功登陸'); $this->db->insert('managerlog'); $data=array( 'id'=>$obj->id, 'name'=>$obj->name, 'logged_in'=>TRUE ); $this->session->set_userdata($data); return 1; }else{ $this->db->set('ip',$this->input->ip_address()); $this->db->set('log','帳號(hào)為〖'.$name.'〗的管理員登陸失敗'); $this->db->insert('managerlog'); return 0; } }

注意:update

$this->db->update('table',$data);//$data為數(shù)組或?qū)ο?br> 所有的值都會(huì)被自動(dòng)轉(zhuǎn)義,以便生成安全的查詢。所以,我要更新我的管理員的登陸時(shí)間,如果采用update語(yǔ)法,是行不通的。
只有通過(guò)set()方法,然后update,利用set方法的第三個(gè)參數(shù)來(lái)禁止CI生成安全的查詢。

生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 五月婷婷在线视频 | 中文字幕精品三区 | 国产精品久久久久久中文字 | 国产片一区二区三区 | 欧美精品一区二区三区四区五区 | 久热这里只有精品6 | 亚洲 成人 一区 | 一区二区国产精品 | av中文在线 | 国户精品久久久久久久久久久不卡 | 亚洲精品尤物福利在线一区 | 国产精品久久久久久久久搜平片 | 国产精品日韩欧美一区二区 | 国产视频一区二区 | 欧美精品h | 高潮视频网站 | 欧州一区二区 | 又黄又爽一线毛片免费观看 | 久久99国产精一区二区三区 | wwwww免费网站上线 | 91久久久国产精品 | 最新中文字幕第一页 | 性做久久久久久免费观看欧美 | 五月婷婷亚洲 | 亚洲一区二区三区免费观看 | 日本99精品 | 国产热re99久久6国产精品 | 91精品国产91久久久久久 | 亚洲精品18| 亚洲精品久久久蜜桃 | 99免费在线视频 | 天天爱综合 | 91在线免费观看 | 国产精品免费在线 | 成人精品一区二区三区中文字幕 | 99在线视频精品 | 精品久久久久久久久久久久久久久久久久久 | 久久精品国产精品 | 久久精品1| 国产不卡在线观看 | 亚洲视频一二 |