簡介
PHP原始為Personal Home Page的縮寫,已經正式更名為 "PHP: Hypertext Preprocessor"。自20世紀90年代國內網際網路開始發展到現在,網際網路信息幾乎覆蓋了我們日常活動所有知識範疇,並逐漸成為我們生活、學習、工作中必不可少的一部分。據統計,從2003 年開始,我國的網頁規模基本保持了翻番的增長速度,並且呈上升趨勢。PHP 語言作為當今最熱門的網站程式開發語言,它具有成本低、速度快、可移植性好、 內置豐富的函式館等優點,因此被越來越多的企業套用於
網站開發中。但隨著網際網路的不斷更新換代,PHP語言也出現了不少問題。
根據動態網站要求,PHP語言作為一種語言程式,其專用性逐漸在套用過程中顯現,其技術水平的優劣與否將直接影響網站的運行效率。其特點是具有公開的原始碼, 在程式設計上與通用型語言,如C語言相似性較高,因此在操作過程中簡單易懂,可操作性強。同時,PHP語言具有較高的
數據傳送處理水平和輸出水平,可以廣泛套用在
Windows系統及各類
Web伺服器中。如果數據量較大,PHP語言還可以拓寬連結面,與各種資料庫相連,緩解數據存儲、檢索及維護壓力。隨著技術的發展,PHP 語言
搜尋引擎還可以量體裁衣,實行個性化服務,如根據客戶的喜好進行分類收集儲存,極大提高了數據運行效率。
主要特點
(一)開源性和免費性
由於PHP的
解釋器的原始碼是公開的,所以安全係數較高的網站可以自己更改PHP的解釋程式。另外,PHP 運行環境的使用也是免費的。
(二)快捷性
PHP是一種非常容易學習和使用的一門語言,它的語法特點類似於C語言,但又沒有C語言複雜的地址操作,而且又加入了
面向對象的概念,再加上它具有簡潔的語法規則,使得它操作編輯非常簡單,實用性很強。
(三)資料庫連線的廣泛性
(四)面向過程和面向對象並用
在PHP語言的使用中,可以分別使用面向過程和面向對象, 而且可以將PHP面向過程和面向對象兩者一起混用,這是其它很多程式語言是做不到的。
優點
(一)流行,容易上手
PHP是目前最流行的程式語言,這毋庸置疑。它驅動全球超過2億多個網站,有全球超過81.7%的公共網站在
伺服器端採用PHP。PHP常用的數據結構都內置了,使用起來方便簡單,也一點都不複雜,表達能力相當靈活。
(二)開發職位很多
在伺服器端的網站編程中PHP會更容易幫助你找到工作。很多網際網路相關企業都在使用PHP開發
框架,所以可以說市場對PHP的開發程式設計師的需求還是比較大的。
(三)仍然在不斷發展
PHP在不斷兼容著類似closures和命名空間等技術,同時兼顧性能和當下流行的框架。版本是7之後,一直在提供更高性能的套用。
(四)可植入性強
PHP 語言在
補丁漏洞升級過程中,核心部分植入簡單易行,且速度快。
(五)拓展性強
PHP 語言在資料庫套用過程中,可以從資料庫調取各類數據,執行效率高。
缺點
(一)PHP的解釋運行機制
(二)設計缺陷,缺少關注PHP被稱作是不透明的語言,因為沒有
堆疊追蹤,各種脆弱的輸入。沒有一個明確的設計哲學。早期的PHP受到Perl的影響,帶有out參數的標準庫又是有C語言引入,面向對象的部分又是從
C++和
Java學來的。
(三)對遞歸的不良支持
PHP並不擅長遞歸。它能容忍的
遞歸函式的數量限制和其他語言比起來明顯少。
主要參考框架
(一)CodeIgniter的優點
1. 配置簡單,全部的配置使用 PHP
腳本來配置,執行效率高;具有基本的路由功能,能夠進行一定程度的路由;具有初步的
Layout功能,能夠製作一定程度的界面外觀;資料庫層封裝的不錯,具有基本的
MVC功能。
2. 快速簡潔,代碼不多,執行性能高,PHP框架簡單, 容易上手,學習成本低,文檔詳細;自帶了很多簡單好用的library,框架適合小型套用。
(二)CodeIgniter 缺點
1. 把Model層簡單的理解為資料庫操作。
2. PHP 框架略顯簡單,只能夠滿足小型套用,略微不太能夠滿足中型套用需要。
(三)CakePHP 的優點
1. CakePHP 是最類似於
RoR的 PHP 框架,包括設計方式,資料庫操作的Active Record方式;設計層面很優雅,沒有自帶多餘的 library,所有的功能都是純粹的框架,執行效率還不錯;資料庫層的hasOne,hasMany 功能很強大,對於複雜業務處理比較合適;
路由功能,配置功能還不錯;自動構建腳手架(scaffold)很強大;適合中型套用;基本實現過了
MVC每一層; 具有自動操作命令行腳本功能。
2. 文檔比較全,在國內推廣的比較成功,大部分人都知道CakePHP,學習成本中等。
(四)CakePHP 的缺點
1. CakePHP非常嚴重的問題是把Model理解為資料庫層操作,嚴重影響了除了資料庫之外的操作能力
2. CakePHP的
cache功能略顯薄弱,配置功能稍嫌弱;CakePHP不適合大型套用,只適合中型套用,小型套用來說略微的學習成本高了點。
PHP加密
加密的目的
加密不同於密碼,加密是一個動作或者過程,其目的就是將一段
明文信息(人類或機器可以直接讀懂的信息)變為一段看上去沒有任何意義的字元,必須通過事先約定的解密規則才能將信息轉換回有意義的可讀信息,通過加密可以防止非授權的信息竊取。
PHP加密函式
PHP的加密函式有crypt()、 md5() 和sha1() 這3種, 其中crypt() 用於單向加密, 所謂的單向加密就是將需要加密的內容進行加密之後, 無法將密文轉換成為可讀的內容, 因此單向加密的套用範圍較狹窄, 一般用於用戶名認證和密碼輸入等情況; 當用戶進入系統時,只需要將密文口令輸 入,經過系統驗證與存儲的口令一致, 即可通過。
md5()和sha1()屬於
哈希算法,它是不可逆的一種算法,通過截取任意一段的初始信息,將其進行轉換,所得到的內容就是
哈希值,且長度固定。 這樣即使信息丟失, 對哈希值進行分析也是無意義的,因為它與原來的信息並無直接聯繫, 因此具備較強的加密功能。md5() 使用了
MD5散列算法, 將一個長度不固定的信息轉換為128位的信息摘要。
sha1() 函式使用了
SHA-1的散列算法,其原理與md5() 類似。md5() 和sha1() 經常用於驗證信息的完整性, 即通過計算檔案的哈希值來驗證檔案是否被修改,因此在PHP中還需要兩個函式來對哈希值進行計算, md5_file() 和sha1_file(), 一旦發現計算出的哈希值與原始值不同,就可以判斷檔案遭到了修改。這3種函式雖然操作簡單,但是都是不可逆的, 無法對密文進行解讀;但是在更高層次的加密工作中,這些簡單的加密函式的加密效果就顯得有些捉襟見肘了。
PHP加密
加密總是與安全密不可分,而每個PHPer都必須將套用安全作為必要的設計思路融入代碼中,以下是一些最佳實踐的建議。
不要再使用
MD5,不要使用
sha1,基本上已經沒有破解難度了。請使用 password_hash來
哈希密碼(php 版本大於等於5.5,小於 5.5 請使用 password_compat 庫),由於 password_hash函式已幫你處理好了加鹽,而且作為鹽的隨機字串已通過加密算法成為了哈希的一部分,password_verify()函式會自動將鹽從哈希中提取出來,所以你無需考慮鹽的存儲問題。
通信接口的簽名,請使用
非對稱算法對簽名秘鑰進行加密, 並對
秘鑰設定有效期,定期更換。
MySQL資料庫訪問
PHP作為伺服器端的腳本語言,其跨平台性以及豐富的函式館成為網站開發的主流語言,而作為網站必不可少的資料庫,輕量、開源、性能優良、簡單易用的
MySQL得到各箇中小型企業的青睞。所以,PHP訪問資料庫技術就成為網站開發的一項基本且重要的工作。基於不同的環境、不同的工具,可以使用不同的MySQL資料庫的訪問方法。
1. 面向對象的方法
1.1 mysqli
通過
MySQLi構造方法實例化一個MySQL連線對象,相當於建立了一個連線,後續代碼完全使用面向對象的方法,使用該對象的成員函式操作MySQL資料庫。
1.2 PDO連線MySQL資料庫
PDO是基於資料庫抽象層的一種訪問方法,基於不同的資料庫的驅動運行不同的程式庫進行資料庫訪問。同樣適用面向對象的方法,創建PDO對象進行連線。
1.3 ADODB連線MySQL資料庫
ADODB同樣是資料庫抽象類。ADODB的資料庫提供了共通的應用程式和所有支持的資料庫連線,ADODB提供了很 比較實用的方法,使它超越了一個抽象層的功能。
2. 面向過程的方法
面向過程的方法是PHP連線資料庫最基本的方法,使用較為簡單。其靈活性較差,在大型項目的開發中一般較少使用。 該設計提供了一個面向過程的接口,並且是針對MySQL4.1.3或更早版本設計的 。 因此 ,雖然也可 以與MySQL4.1.3或更新的資料庫
服務端進行互動,但並不支持後期MySQL服務端提供的一些特性。由於比較古老,安全性差,所以現在被後來的MySQLi取代。
網站套用
今天,網路技術正以突飛猛進的速度發展,而企業也要與時俱進,只有高度重視並充分利用網路技術,才能在實際運行過程中,讓網路成為企業發展的助力。PHP語言作為網站開發的通用語言,簡單易行,可移植性好,套用空間廣泛,逐漸受到網站開發人員的歡迎。因此,在行業網站建設過程中,具有良好的套用前景。
與其他常用語言相比, PHP語言優勢明顯。較好的可移植性、可靠性以及較高的運行效率使 PHP 語言在當下行業網站建設中獨占鰲頭。利用 PHP 語言進行行業網站設計,能夠實現資料庫的實時性更新,網站的日常維護和管理簡單易行,進而提高用戶的使用效率。
PHP語言套用過程中,要求開發人員熟悉該語言,特別是軟體版本、特性等諸多環節,否則容易造成衝突,使配置問題難以處理。因此,在網站開發設計過程中,應避免單獨進行環境搭配。
展望
對於非常小的項目,PHP是一個十分符合人意的程式語言。 但是對於較大的和更為複雜的項目,PHP 就顯出它的薄弱了。所以,針對PHP暴露出的一系列缺點問題,我們應當不斷地摸索之後,然後找到某些問題的解決方案。一個開源的語言十分流行是一件好事。希望所有的問題能有一天得到解決,然後我們就將擁有一個開源語言,它既開源,又好用。