每天5分鐘,細讀PHP手冊-14

用戶提交的數據
  • 必須時常留意你的代碼,以確保每一個從客戶端提交的變量都經過適當的檢查,然後問自己以下一些問題:
    • 此腳本是否只能影響所預期的文件?
    • 非正常的數據被提交後能否產生作用?
    • 此腳本能用於計劃外的用途嗎?
    • 此腳本能否和其它腳本結合起來做壞事?
    • 是否所有的事務都被充分記錄了?
魔術引號指令
  • magic_quotes_gpc:對GET、POST、COOKIE生效;
  • magic_quotes_runtime:對大部分從外部獲取的數據生效;
  • magic_quotes_sybase:覆蓋magic_quotes_gpc,會使用單引號對單引號進行轉義,而雙引號、反斜線 和 NULL 字符將不會進行轉義;
  • 沒有理由再使用魔術引號,因爲它不再是 PHP 支持的一部分。 不過它幫助了新手在不知不覺中寫出了更好(更安全)的代碼;
HTTP認證
  • 分爲basic和digest認證兩種,basic是賬戶密碼的明文傳輸認證,digest摘要認證不包含密碼,包含認證信息的摘要信息;
文件上傳
  • 要確保文件上傳表單的屬性是 enctype=“multipart/form-data”;
  • 注意 PHP 也支持 PUT 方法的文件上傳;
  • max_execution_time 僅僅只影響腳本本身運行的時間。任何其它花費在腳本運行之外的時間,諸如用函數 system() 對系統的調用、sleep() 函數的使用、數據庫查詢、文件上傳等,在計算腳本運行的最大時間時都不包括在內
  • max_input_time 以秒爲單位設定了腳本接收輸入的最大時間,包括文件上傳。對於較大或多個文件,或者用戶的網速較慢時,可能會超過默認的 60 秒;
使用遠程文件
  • 只要在 php.ini 文件中激活了 allow_url_fopen 選項,就可以在大多數需要用文件名作爲參數的函數中使用 HTTP 和 FTP 的 URL 來代替文件名;
連接狀態
  • 0:正常狀態;1:用戶退出;2:超時退出;
  • 用戶超時退出可以使用ignore_user_abort來忽略;
  • 有時候讓腳本執行完成或許是更好的選擇;
  • 3=1+2,同時設置了忽略用戶退出;
數據庫持久連接
  • 實際上,從嚴格意義上來講,持久連接不會提供任何非持久連接無法提供的特殊功能;
  • 持久連接的好處在於提升效率;
  • 不管在什麼情況下,都可以通過使用register_shutdown_function()函數來註冊一個簡單的清理函數來打開數據表鎖,或者回滾事務。或者更好的處理方法,是不在使用數據表鎖或者事務處理的腳本中使用持久連接,這可以從根本上解決這個問題;
  • 持久連接與常規的非持久連接應該是可以互相替換的。即將持久連接替換爲非持久連接時,你的腳本的行爲不應該發生改變。使用持久連接只應該改變腳本的效率,不應該改變其行爲;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章