-
對(duì)于value來說,sql本身是沒啥問題的,但是PHP就有問題了,比如就拿教程里面的這種方式,把變量 $value 里的字符串直接拼接成為 sql 語句,就會(huì)存在很大的安全隱患,舉個(gè)例子,假設(shè)你開發(fā)一個(gè)密碼登錄的接口,$value1 里存的是用戶賬號(hào),$value2 里存的是用戶密碼,sql語句是這樣子拼的:
$sql = "select * from user where `account` = '".$value1."' and `password` = '".$value2."'";
如果遇到惡意用戶,他在登錄時(shí)把密碼填成? 123456' or '1' = '1 ,想一下,你最后會(huì)得到什么樣的sql語句,是不是
select * from user where `account` = 'zhangsan' and `password` = '123456' or '1' = '1'
于是只要 '1' = '1' 成立,sql語句就能執(zhí)行成功。。。
是不是很可怕?這就叫做 sql 注入,是一種很古老的黑客攻擊手段,所以現(xiàn)在一般會(huì)用 addslashes 對(duì)用戶提交的內(nèi)容進(jìn)行轉(zhuǎn)義,把那些可能會(huì)導(dǎo)致sql注入的關(guān)鍵字給替換掉。
查看全部 -
數(shù)組里有一個(gè)元素也可以叫數(shù)組
查看全部 -
給字段名加上··這個(gè)符號(hào),可以轉(zhuǎn)換關(guān)鍵詞;這個(gè)符號(hào)在鍵盤Esc的下面
查看全部 -
解決問題的方法:這些方法也是tp框架等一些框架的核心
查看全部 -
面向過程編程的問題總結(jié)
查看全部 -
template_c放置編譯后的文件(存放緩存文件的地方),現(xiàn)在都不用smarty緩存了(可以設(shè)置關(guān)閉),因?yàn)橛辛薽emcache等緩存技術(shù);
控制層只負(fù)責(zé)從某個(gè)model獲取數(shù)據(jù),再放到某個(gè)view進(jìn)行展示
數(shù)據(jù)的處理全部在Model層搞定
不要在控制層處理數(shù)據(jù)!!
1.如果以后控制層變得越來越復(fù)雜,可能就是業(yè)務(wù)邏輯層被寫進(jìn)了控制層,這是不對(duì)的
2.業(yè)務(wù)邏輯層(Model層)是MVC系統(tǒng)的核心,無論是從數(shù)據(jù)庫(kù)取數(shù)據(jù),還是第三方接口取數(shù)據(jù)、傳遞數(shù)據(jù),還是完成一系列的查詢分類篩選清洗等操作都是在業(yè)務(wù)邏輯層完成。
查看全部 -
對(duì)于mvc框架smarty就是第三方視圖類庫(kù),使用smarty先要include到include.php 再在實(shí)例化smarty 最后配置smarty,完成這些操作才能使用smarty視圖引擎。 如果統(tǒng)一將這些操作寫到function.php頁(yè),將大大簡(jiǎn)化重復(fù)編寫操作,方便后期修改。
查看全部 -
這里使用了smarty模板引擎中的兩個(gè)函數(shù)assgin()和display();assgin()作用是將一個(gè)變量注冊(cè)到模板里;display()作用是調(diào)用模板
查看全部 -
將smarty模板引擎引入MVC(即整個(gè)項(xiàng)目);到此為止,整個(gè)MVC的基本框架可以算完成;smarty模板引擎也叫視圖引擎;即將要展示的東西分配到前臺(tái)模板(HTML)
查看全部 -
第三方類庫(kù)調(diào)用函數(shù)制作 (看截圖)
查看全部 -
將學(xué)到的smarty知識(shí)用到MVC中,封裝一個(gè)函數(shù)用來控制調(diào)用第三方的插件(函數(shù)/類)
查看全部 -
實(shí)戰(zhàn)實(shí)戰(zhàn)實(shí)戰(zhàn)
查看全部 -
Smarty三種插件 用例及釋義
functions 函數(shù)插件 (自定義函數(shù))
1.將插件以 function.插件名.php 的格式進(jìn)行建立,放置在./lib/plugins目錄下
2.插件內(nèi)為php代碼 且為function函數(shù)
格式: function smarty_function_插件名 ($params){... $params[參數(shù)1] $params[參數(shù)2] ...}
注意: 該處的插件名要和腳本名中的插件名 要一致.
用法: {test width="150" height="200"}
modifiers 修飾插件 (自定義變量調(diào)節(jié)器)
1.將插件以 modifier.插件名.php 的格式進(jìn)行建立,放置在./lib/plugins目錄下
2.插件內(nèi)為php代碼 且為function函數(shù)
格式: function smarty_modifier_插件名 (參數(shù)1,參數(shù)2,參數(shù)3...){...}
注意: 該處的插件名要和腳本名中的插件名 要一致.
用法: {$time|test:'Y-m-d H:i:s'}
bloack 區(qū)塊函數(shù)插件 (自定義區(qū)塊函數(shù))
1.將插件以 bloack.插件名.php 的格式進(jìn)行建立,放置在./lib/plugins目錄下
2.插件內(nèi)為php代碼 且為function函數(shù)
格式: function smarty_block_插件名 ($params, $content){... $params[參數(shù)1] $params[參數(shù)2] ...}
注意: 該處的插件名要和腳本名中的插件名 要一致.
用法: {test replace=true maxnum=43} {$str} {/test}
查看全部 -
插件命名不能重復(fù)!
查看全部 -
模板在調(diào)用插件的時(shí)候,smarty(test.php)中,依然需要這兩個(gè)步驟,即
$smarty->assign('arr',$arr);//對(duì)smarty模板賦值
$smarty->display('test.tpl');//分配到模板
查看全部
舉報(bào)