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