不要使用mysql_*系列函數(shù),查詢時(shí)盡量對sql語句進(jìn)行預(yù)處理
PHP官方目前已經(jīng)將此系列函數(shù)標(biāo)記為棄用狀態(tài),添加PHP對mysql的支持,編譯時(shí)使用下面的參數(shù)
--enable-mysqlnd --with-pdo-mysql --with-mysqli --with-mysql=mysqlnd
mysql_*系列函數(shù)不支持 預(yù)處理語句,事務(wù),存儲過程,異步查詢,多條語句查詢,
這也是強(qiáng)烈建議使用pdo_mysql或者mysqli的原因.
pdo是PHP的數(shù)據(jù)數(shù)據(jù)抽象層,為了擴(kuò)展升級考慮,最好使用pdo_mysql
使用pdo_mysql擴(kuò)展,查詢前進(jìn)行sql語句預(yù)處理,不僅能很有效的避免sql注入,同時(shí)一個(gè)查詢?nèi)绻粓?zhí)行多次,那么只需要給預(yù)處理的sql語句重新綁定參數(shù),大大提升查詢的性能,降低資源(cpu)消耗
不要在純PHP文件的最后結(jié)尾中使用閉合標(biāo)簽good style:
bad style:
在最后一行加上閉合標(biāo)簽,很可能會由于不小心,在閉合標(biāo)簽之后加入空白字符,比如換行,示例如下:
//here ,some of whitespace那么假設(shè)此文件包含在另外一個(gè)文件中,且在上述代碼之后使用header函數(shù)輸出,那么就會報(bào)錯(cuò),這種錯(cuò)誤很難被發(fā)現(xiàn)
只有當(dāng)你在模板文件中才會需要閉合標(biāo)簽
如下了解一些web安全方面的知識,如sql注入,xss攻擊,csrf攻擊等等,永遠(yuǎn)不要相信用戶的輸入知道如何避免上述提到的安全問題
比如使用pdo_msyql預(yù)處理語句,防范sql注入
比如對用戶輸入進(jìn)行過濾,防范xss攻擊等等
始終記著對用戶輸入進(jìn)行驗(yàn)證,即使客戶端使用js對用戶數(shù)據(jù)進(jìn)行驗(yàn)證了,也不能取代服務(wù)器端的驗(yàn)證,客戶端js驗(yàn)證是可以繞過的
具體請查看php手冊安全部分內(nèi)容對于用戶輸入的數(shù)據(jù)進(jìn)行驗(yàn)證和過濾,不要忘記PHP內(nèi)置的filter_*,盡可能的使用他們了解他們
http://cn2.php.net/manual/en/book.filter.php比如驗(yàn)證一個(gè)郵件地址是否合法
if(!filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) { //Email is invalid. Show the user an error message. }不要編寫重復(fù)代碼,保持代碼精簡即針對同一功能或者業(yè)務(wù)的代碼,盡可能只有一個(gè)實(shí)現(xiàn),新手容易犯的錯(cuò)誤就是喜歡copy,copy是大忌
字節(jié)碼緩存,為PHP開啟apc或者opcode擴(kuò)展
比較好的做法就是快速完成需求和功能,然后進(jìn)行重構(gòu),壓縮減少代碼量,重構(gòu)的過程會讓你的代碼更加精簡開啟apc或者opcode對性能的提升很大,你需要做的,僅僅是編譯安裝一個(gè)額外的擴(kuò)展
編碼統(tǒng)一使用utf8
opcode在php-5.5集成到核心代碼中,編譯時(shí) --enable-opcode 即可項(xiàng)目文件統(tǒng)一使用utf8編碼
html頁面meta部分
數(shù)據(jù)庫表使用utf8編碼,鏈接數(shù)據(jù)庫設(shè)定編碼
$db = new PDO("mysql:host=localhost;dbname=database;charset=utf8", "root", "");合理使用數(shù)據(jù)庫字段類型,了解一些數(shù)據(jù)庫設(shè)計(jì)范式合理使用字段類型,不僅能減少磁盤使用量,也能提升查詢性能
其他一些建議不要使用正則去解析html,使用 Document Object Model
使用var_dump而不是echo,因?yàn)関ar_dump輸出的信息更多,調(diào)式的時(shí)候很有用
使用緩存,reids,memcache等等
線上環(huán)境關(guān)閉錯(cuò)誤信息提示###
post提交數(shù)據(jù)處理結(jié)束后,使用header重定向,避免用戶刷新提交垃圾重復(fù)數(shù)據(jù)
不要在循環(huán)中執(zhí)行sql語句(假設(shè)是必須的,那么也最好在循環(huán)外使用預(yù)處理語句)
對密碼進(jìn)行hash加密,PHP-5.5內(nèi)置hash加密函數(shù) password_hash,可查看手冊
上傳圖片不要存儲在數(shù)據(jù)庫里,上傳圖片時(shí)裁剪圖片節(jié)省存儲空間
良好的注釋文檔,保持php代碼風(fēng)格的一致性(比如縮進(jìn)一會兒使用tab,一會兒使用space就是特別差的習(xí)慣)
良好的代碼code style,請參考 PHP-FIG 標(biāo)準(zhǔn),PHP-FIG是php框架代碼規(guī)范的非官方組織,有很多框架遵循此編碼規(guī)范盡可能多的使用開源的解決方案,避免重復(fù)造輪子,在自己寫代碼完成一個(gè)功能前,先去搜索引擎或者技術(shù)網(wǎng)站查找是否已經(jīng)有相關(guān)的解決方案,
避免吹毛求疵,比如到底是使用"還是"號的性能比較好,如果你使用了opcode擴(kuò)展,兩者之間是沒有什么區(qū)別的,保持風(fēng)格一致即可
使用版本控制工具維護(hù)你的代碼,現(xiàn)在流行的是git
學(xué)習(xí)一些設(shè)計(jì)模式,比如單例模式,工廠模式,知道他們的應(yīng)用場景,知道應(yīng)用場景比知道他們寫他們更重要
文中如有紕漏,錯(cuò)誤之處,請指出
對于后續(xù)中列出的其他建議,如果有人覺得需要詳細(xì)展開,請留言。
參考或者原文出處:PHP – Best Practises
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/20714.html
平日學(xué)習(xí)接觸過的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個(gè)網(wǎng)址:http://www.kancloud.cn/jsfron... 1. Javascript 前端生成好看的二維碼 十大經(jīng)典排序算法(帶動圖演示) 為什么知乎前端圈普遍認(rèn)為H5游戲和H5展示的JSer 個(gè)人整理和封裝的YU.js庫|中文詳細(xì)注釋|供新手學(xué)習(xí)使用 擴(kuò)展JavaScript語法記錄 - 掉坑初期工具 漢字拼音轉(zhuǎn)換...
平日學(xué)習(xí)接觸過的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個(gè)網(wǎng)址:http://www.kancloud.cn/jsfron... 1. Javascript 前端生成好看的二維碼 十大經(jīng)典排序算法(帶動圖演示) 為什么知乎前端圈普遍認(rèn)為H5游戲和H5展示的JSer 個(gè)人整理和封裝的YU.js庫|中文詳細(xì)注釋|供新手學(xué)習(xí)使用 擴(kuò)展JavaScript語法記錄 - 掉坑初期工具 漢字拼音轉(zhuǎn)換...
平日學(xué)習(xí)接觸過的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個(gè)網(wǎng)址:http://www.kancloud.cn/jsfron... 1. Javascript 前端生成好看的二維碼 十大經(jīng)典排序算法(帶動圖演示) 為什么知乎前端圈普遍認(rèn)為H5游戲和H5展示的JSer 個(gè)人整理和封裝的YU.js庫|中文詳細(xì)注釋|供新手學(xué)習(xí)使用 擴(kuò)展JavaScript語法記錄 - 掉坑初期工具 漢字拼音轉(zhuǎn)換...
平日學(xué)習(xí)接觸過的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個(gè)網(wǎng)址:http://www.kancloud.cn/jsfron... 1. Javascript 前端生成好看的二維碼 十大經(jīng)典排序算法(帶動圖演示) 為什么知乎前端圈普遍認(rèn)為H5游戲和H5展示的JSer 個(gè)人整理和封裝的YU.js庫|中文詳細(xì)注釋|供新手學(xué)習(xí)使用 擴(kuò)展JavaScript語法記錄 - 掉坑初期工具 漢字拼音轉(zhuǎn)換...
showImg(https://segmentfault.com/img/bV6aHV?w=1280&h=800); 社區(qū)優(yōu)秀文章 Laravel 5.5+passport 放棄 dingo 開發(fā) API 實(shí)戰(zhàn),讓 API 開發(fā)更省心 - 自造車輪。 API 文檔神器 Swagger 介紹及在 PHP 項(xiàng)目中使用 - API 文檔撰寫方案 推薦 Laravel API 項(xiàng)目必須使用的 8 個(gè)...
閱讀 1995·2021-11-24 09:39
閱讀 989·2021-11-11 16:55
閱讀 1442·2021-10-09 09:43
閱讀 1430·2021-10-08 10:17
閱讀 1663·2021-08-25 09:41
閱讀 434·2019-08-30 13:02
閱讀 637·2019-08-29 15:14
閱讀 1014·2019-08-29 13:53