① tp5 怎麼過濾輸入的字元
可以直接定義一個字元類型,然後用gets(),從鍵盤得到這個字元串,再這個字元串進行遍歷解析
下面提供一個例子:從鍵盤輸出一串字元並且輸出其中的數字
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char string[100];
int i;//循環變數
gets(string);
for (i = 0; i <strlen(string); i++) {
if((string[i]>='0')&&(string[i]<='9')){//判斷每個字元是否是0~9直接的數
printf("%c",string[i]);//是數字的話直接列印
}
}
puts("");
puts("end");
return EXIT_SUCCESS;
}
② thinkphp3.2 資料庫添加內容怎樣用field過濾
在thinkphp中,$User->...->select()/add()/save()這個連貫操作里的'...'部分是不分順序的.
你換個寫法: $User->field('name')->save($data);或者$User->field('name')->add($data)
這個才是手冊里提到的欄位過濾
③ thinkphp哪個方法對輸入的變數進行過濾
I方法可以對獲取的數據進行過濾
詳細的說明你可以去看下I方法的函數詳解
④ php 關於thinkphp的防sql注入跟過濾問題
防止注入
opensns
對於WEB應用來說,SQL注入攻擊無疑是首要防範的安全問題,系統底層對於數據安全方面本身進行了很多的處理和相應的防範機制,例如:
$User = M("User"); // 實例化User對象
$User->find($_GET["id"]);
即便用戶輸入了一些惡意的id參數,系統也會強制轉換成整型,避免惡意注入。這是因為,系統會對數據進行強制的數據類型檢測,並且對數據來源進行數據格式轉換。而且,對於字元串類型的數據,ThinkPHP都會進行escape_string處理(real_escape_string,mysql_escape_string)。
通常的安全隱患在於你的查詢條件使用了字元串參數,然後其中一些變數又依賴由客戶端的用戶輸入,要有效的防止SQL注入問題,我們建議:
查詢條件盡量使用數組方式,這是更為安全的方式;
如果不得已必須使用字元串查詢條件,使用預處理機制(3.1版本新增特性);
開啟數據欄位類型驗證,可以對數值數據類型做強制轉換;(3.1版本開始已經強制進行欄位類型驗證了)
使用自動驗證和自動完成機制進行針對應用的自定義過濾;
欄位類型檢查、自動驗證和自動完成機制我們在相關部分已經有詳細的描述。
查詢條件預處理
where方法使用字元串條件的時候,支持預處理(安全過濾),並支持兩種方式傳入預處理參數,例如:
$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select();
或者
$Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();
模型的query和execute方法 同樣支持預處理機制,例如:
$model->query('select * from user where id=%d and status=%d',$id,$status);
或者
$model->query('select * from user where id=%d and status=%d',array($id,$status));
execute方法用法同query方法。
⑤ ThinkPHP獲取表單提交過來的賬戶輸入的數據,我是不是要做一些過濾
表單提交過來的數據要進行資料庫操作的話是必須要盡心字元過濾的,防止SQL注入,保證數據安全