創建和處理表單是web開發者的一個重要能力指標,本章梳理下重點。 1、GET和POST的區別 GET方法不支持ASCII字符之外的任何字符,需要編碼操作(url_encode(),url_decode()),有的浏覽器可自動完成。 2、表單元素 常用的十幾個牢記即可,暫不表述。 3、檢查提交來源 來源: $ref = $_SERVER['HTTP_REFERER'] 服務器地址: $srv = {$_SERVER['SERVER_NAME']} {$_SERVER['PHP_SELF']} if( strcmp($ref ,$srv) == 0 ) 安全 4、多頁面傳遞數據 三種方案: 表單隱含元素 數據保存在session 數據保存在數據庫 5、驗證表單數據 不要指望用戶按我們的意願輸入數據,需要我們在客戶端和服務器端驗證。 避免表單重復提交幾個方案: (1) 客戶端js (2)cookie (3)session (4)header()函數轉向 表單過期的處理(避免錯誤提交後返回頁面數據丟失) 6、表單安全 預防XSS攻擊:www.2cto.com htmlspecialchars() 先對 ‘ “ < > & 做html編碼 htmlentitles() 轉換任意的html超文本實體,主要是過濾輸出(過濾js腳步標簽) strip_tags() 去除任何的html代碼 每當權限級別變化時,用 session_regenerate_id () 改變sessionid 。 預防sql 注入: mysql_escape_sstring() mysql_real_escape_sstring() 7、開發安全的代碼 用戶輸入驗證 高級驗證 ctype 數據過濾 - pecl filter擴展 input_get() 文件路徑檢測 魔法引用 magic_quote_gpc ,不提倡該法