thinkphpi過濾方法
Ⅰ thinkphp里I方法過濾方法都有什麼有看到過intval和htmlspecialchars,手冊沒見過,想知道所有過濾方法
你好,我所知道的:
1 strip_tags:從字元串中去除 HTML 和 PHP 標記
2 mysql_escape_string:轉義一個字元串用於 mysql_query
這些函數在專防注入方面起到很大的作屬用.
Ⅱ ThinkPHP控制器參數綁定中,參數已用I函數過濾了嗎
默認帶的參數就是需要驗證的表單名稱,所以你上面的寫法應該是沒問題的 但是需要注專意的是屬:checkidcard($sfzh)函數的返回值應改為true或者false,分別表示驗證通過或失敗 function checkidcard($sfzh){ if(!preg_match('// 驗證正則 ..', $sfzh).
Ⅲ thinkphp3.1有沒有i方法
有
ThinkPHP函數詳解:I方法
I('變數類型.變數名',['默認值'],['過濾方法'])
變數類型是指請求方式或者輸入類型,包括:
變數類型 含義
get 獲取GET參數
post 獲取POST參數
param 自動判斷請求類型獲取GET、POST或者PUT參數
request 獲取REQUEST 參數
put 獲取PUT 參數
session 獲取 $_SESSION 參數
cookie 獲取 $_COOKIE 參數
server 獲取 $_SERVER 參數
globals 獲取 $GLOBALS參數
注意:變數類型不區分大小寫。
變數名則嚴格區分大小寫。
默認值和過濾方法均屬於可選參數。
用法
我們以GET變數類型為例,說明下I方法的使用:
echo I('get.id'); // 相當於 $_GET['id']
echo I('get.name'); // 相當於 $_GET['name']
支持默認值:
echo I('get.id',0); // 如果不存在$_GET['id'] 則返回0
echo I('get.name',''); // 如果不存在$_GET['name'] 則返回空字元串
採用方法過濾:
echo I('get.name','','htmlspecialchars'); // 採用htmlspecialchars方法對$_GET['name'] 進行過濾,如果不存在則返回空字元串
支持直接獲取整個變數類型,例如:
I('get.'); // 獲取整個$_GET 數組
用同樣的方式,我們可以獲取post或者其他輸入類型的變數,例如:
I('post.name','','htmlspecialchars'); // 採用htmlspecialchars方法對$_POST['name'] 進行過濾,如果不存在則返回空字元串
I('session.user_id',0); // 獲取$_SESSION['user_id'] 如果不存在則默認為0
I('cookie.'); // 獲取整個 $_COOKIE 數組
I('server.REQUEST_METHOD'); // 獲取 $_SERVER['REQUEST_METHOD']
param變數類型是框架特有的支持自動判斷當前請求類型的變數獲取方式,例如:
echo I('param.id');
如果當前請求類型是GET,那麼等效於 $_GET['id'],如果當前請求類型是POST或者PUT,那麼相當於獲取 $_POST['id'] 或者 PUT參數id。
並且param類型變數還可以用數字索引的方式獲取URL參數(必須是PATHINFO模式參數有效,無論是GET還是POST方式都有效),例如:
當前訪問URL地址是
http://serverName/index.php/New/2016/06/01
那麼我們可以通過
echo I('param.1'); // 輸出2016
echo I('param.2'); // 輸出06
echo I('param.3'); // 輸出01
事實上,param變數類型的寫法可以簡化為:
I('id'); // 等同於 I('param.id')
I('name'); // 等同於 I('param.name')
變數過濾
使用I方法的時候 變數其實經過了兩道過濾,首先是全局的過濾,全局過濾是通過配置VAR_FILTERS參數,這里一定要注意,3.1版本之後,VAR_FILTERS參數的過濾機制已經更改為採用array_walk_recursive方法遞歸過濾了,主要對過濾方法的要求是必須引用返回,所以這里設置htmlspecialchars是無效的,你可以自定義一個方法,例如:
function filter_default(&$value){
$value = htmlspecialchars($value);
}
然後配置:
'VAR_FILTERS'=>'filter_default'
如果需要進行多次過濾,可以用:
'VAR_FILTERS'=>'filter_default,filter_exp'
filter_exp方法是框架內置的安全過濾方法,用於防止利用模型的EXP功能進行注入攻擊。
因為VAR_FILTERS參數設置的是全局過濾機制,而且採用的是遞歸過濾,對效率有所影響,所以,我們更建議直接對獲取變數過濾的方式,除了在I方法的第三個參數設置過濾方法外,還可以採用配置DEFAULT_FILTER參數的方式設置過濾,事實上,該參數的默認設置是:
'DEFAULT_FILTER' => 'htmlspecialchars'
也就說,I方法的所有獲取變數都會進行htmlspecialchars過濾,那麼:
I('get.name'); // 等同於 htmlspecialchars($_GET['name'])
同樣,該參數也可以支持多個過濾,例如:
'DEFAULT_FILTER' => 'strip_tags,htmlspecialchars'
I('get.name'); // 等同於 htmlspecialchars(strip_tags($_GET['name']))
如果我們在使用I方法的時候 指定了過濾方法,那麼就會忽略DEFAULT_FILTER的設置,例如:
echo I('get.name','','strip_tags'); // 等同於 strip_tags($_GET['name'])
I方法的第三個參數如果傳入函數名,則表示調用該函數對變數進行過濾並返回(在變數是數組的情況下自動使用array_map進行過濾處理),否則會調用PHP內置的filter_var方法進行過濾處理,例如:
I('post.email','',FILTER_VALIDATE_EMAIL);
表示 會對$_POST['email'] 進行 格式驗證,如果不符合要求的話,返回空字元串。
(關於更多的驗證格式,可以參考 官方手冊的filter_var用法。)
或者可以用下面的字元標識方式:
I('post.email','','email');
可以支持的過濾名稱必須是filter_list方法中的有效值(不同的伺服器環境可能有所不同),可能支持的包括:
int
boolean
float
validate_regexp
validate_url
validate_email
validate_ip
string
stripped
encoded
special_chars
unsafe_raw
email
url
number_int
number_float
magic_quotes
callback
在有些特殊的情況下,我們不希望進行任何過濾,即使DEFAULT_FILTER已經有所設置,可以使用:
I('get.name','',NULL);
一旦過濾參數設置為NULL,即表示不再進行任何的過濾。
Ⅳ thinkPHP的I方法是獲取表單的值嗎
獲取用戶提交的數據
echo I('get.id'); // 相當於 $_GET['id']
echo I('get.name'); // 相當於 $_GET['name']
I('post.name','','htmlspecialchars'); // 採用htmlspecialchars方法對$_POST['name'] 進行過濾,如果不存在則返回空字元回串
I('session.user_id',0); // 獲取$_SESSION['user_id'] 如果不存在則默認為答0
I('cookie.'); // 獲取整個 $_COOKIE 數組
I('server.REQUEST_METHOD'); // 獲取 $_SERVER['REQUEST_METHOD']
Ⅳ thinkphp5 i方法過濾沒找到在手冊哪裡,求助
字元抄串函數:md5,strip_tags...等
filter_list:
int
boolean
float
validate_regexp
validate_url
validate_email
validate_ip
string
stripped
encoded
special_chars
unsafe_raw
email
url
number_int
number_float
magic_quotes
callback
Ⅵ thinkphp I函數 怎麼過濾提交的富文本編輯HTML
你的辦來法完全可行,底層里源面實際上就是把過濾函數作為一個函數而執行的,參數就是你的數據,所以你自建的函數完全可以運行,但是要放到公共函數庫中。例如:放到Application/Common/Common/function.php中
Ⅶ thinkphp5 i方法過濾沒找到在手冊哪裡,求助
thinkphp5已經取消了單字母函數,I函數在5.0
中對應的是input函數,用法類似!
Ⅷ thinkphp的i方法的post和post.這個帶不帶點,有什麼不同啊
傳統方式獲取變數
$id = $_GET['id']; // 獲取get變數
$name = $_POST['name']; // 獲取post變數
$value = $_SESSION['var']; // 獲取session變數
$name = $_COOKIE['name']; // 獲取cookie變數
$file = $_SERVER['PHP_SELF']; // 獲取server變數
Get示例:
http://localhost/news/archive/2012/01/15
$year = $_GET["_URL_"][2];
I方法
I (『變數類型.變數名/修飾符』,[『默認值』],[『過濾方法』],[『額外數據源』])
get 獲取GET參數
post 獲取POST參數
param 自動判斷請求類型獲取GET、POST或者PUT參數
request 獲取REQUEST 參數
put 獲取PUT 參數
session 獲取 $_SESSION 參數
cookie 獲取 $_COOKIE 參數
server 獲取 $_SERVER 參數
globals 獲取 $GLOBALS參數
path 獲取 PATHINFO模式的URL參數(3.2.2新增)
data 獲取 其他類型的參數,需要配合額外數據源參數(3.2.2新增)
使用示例:
echo I('post.id'); // 相當於 $_POST['id']
echo I('get.name'); // 相當於 $_GET['name']
echo I('param.id'); // get或post,param.可以省略
echo I('path.1'); // 獲取重寫的url變數
I('get.id/d'); // 強制轉換成整數,有以下幾種可選擇:
參數 含義
s 強制轉換為字元串類型
d 強制轉換為整形類型
b 強制轉換為布爾類型
a 強制轉換為數組類型
f 強制轉換為浮點類型
I('data.file1','','',$_FILES); //讀取文件
I('get.'); // 獲取整個$_GET 數組
I('post.name','','htmlspecialchars'); // 採用htmlspecialchars方法對$_POST['name'] 進行過濾,如果不存在則返回空字元串。這是默認過濾,可以省略
I('session.user_id',0); // 獲取$_SESSION['user_id'] 如果不存在則默認為0
I('cookie.'); // 獲取整個 $_COOKIE 數組
I('server.REQUEST_METHOD'); // 獲取 $_SERVER['REQUEST_METHOD']
Ⅸ thinkphp中這句話是什麼意思I ( 'cTime', 0, 'intval' )
I是TP自己封裝的一個參數接收過濾的方法,具體使用看源碼就能明白
你發的意思是接收 cTime 參數, 參數過濾方法是intval, 如果不符合cTime值將變為0
希望可以幫到你
Ⅹ Thinkphp中I方法接收的數據和POST提交的數據一起對資料庫進行操作應該怎麼做
一起操作?什麼意思,管他是post還是get的,接過來不就行了,一個接不過來用連個接,大不了一個一個接。