PHP和MySQL Web開發
PHP和MySQL Web開發(原書第4版)【入門級神作,享譽全球的開發聖經】
歡迎來到PHP和MySQL Web開發的世界。在本書中,你將學習我們在使用PHP和MySQL中得到的經驗精華。同時,PHP和MySQL也是目前最熱門的兩個Web開發工具。
■ 為什麼要學習本書
■ 使用本書將學習到哪些知識
■ PHP和MySQL都是什麼及其偉大之處
■ PHP和MySQL最新版本的變化
■ 本書的組織結構
為什麼要學習本書
本書將介紹如何建立可互動的Web站點,包括從最簡單的訂單表單到複雜的安全電子商務站點,甚至是互動式的Web 2.0網站。而且,讀者還將瞭解如何使用開源技術來實現它。本書的目標讀者群是已經瞭解了HTML基礎知識,並且以前曾經使用過一些現代程式語言進行過程式開發的讀者。但是這並不要求讀者從事過Internet 程式設計或者使用過關聯式資料庫。如果你是入門級程式設計師,你將發現本書還是非常有用的,但是你可能會需要更長的時間來吸收和消化它。我們儘量做到不遺漏任何基本 概念,但是我們在介紹這些基本概念的時候都比較簡略。本書的典型讀者是希望掌握PHP和MySQL並致力於建立大型或電子商務型別Web站點的人。有些讀 者可能已經使用過另一種Web開發語言,如果是這樣的話,就更容易掌握本書的內容。
我們編寫本書第1版的原因在於,我們已經厭倦了尋找那些 充其量只是基本的PHP函式參考的圖書。那些圖書是有用的,但是當你的老闆或客戶說“趕快給我編寫一個購物車”時,那些圖書無法幫助你。我們儘量使本書中 的每一個例子都有實用價值。許多示例程式碼可以在Web站點上直接使用,而大多數程式碼只要稍微經過修改就可以直接使用。
使用本書將學習到哪些知識
學習了本書以後,讀者將能夠建立實用的動態Web站點。如果讀者已經使用普通的HTML建立Web站點,將意識到這種方法的侷限性。一個純HTML網站 的靜態內容就只能是靜態的。除非專門對其進行了更新,否則其內容將不會發生變化。使用者也無法以任何形式與站點進行互動。使用一種程式語言(例如,PHP)和資料庫(例如,MySQL),可以建立動態的站點:你可以自定義站點並且在站點中包含實時資訊。
在本書中,我們花費了大量的精力來介紹實用的應用程式。我們從一個簡單的線上訂購系統開始,然後介紹PHP和MySQL的不同部分。
我們將討論與建立一個實用Web站點相關的電子商務和安全性方面的問題,並且介紹如何使用PHP和MySQL來實現這些方面。
在本書的最後部分,我們將介紹如何實現實際專案,並且和讀者一起設計、計劃並且構建如下專案:
■ 使用者身份驗證和個性化設定
■ 購物車
■ 基於Web的電子郵件
■ 郵件列表管理器
■ Web論壇
■ PDF文件的生成
■ 使用XML和SOAP連線Web服務
■ 使用Ajax構建Web 2.0應用程式
這些專案都是可以直接使用的,或者可以經過一定的修改來滿足讀者的實際需要。我們選擇這些專案是因為我們相信這8個專案是程式設計師建立基於Web應用程式時最常見的專案。如果讀者的需要有所不同,本書也可以幫助讀者實現目標。
什麼是PHP
PHP是一種伺服器端指令碼語言,它是專門為Web而設計的。在一個HTML頁面中,你可以嵌入PHP程式碼,這些程式碼在每次頁面被訪問時執行。PHP程式碼將在Web伺服器中被解釋並且生成HTML或訪問者看到的其他輸出。PHP是1994年出現的,最初只是Rasmus Lerdorf一個人的工作成果。其他一些天才改進了這種語言,它經歷了4次非常重要的重新編寫,才變成了我們今天所看到的廣為使用的、成熟的PHP。到 2007年11月,PHP已經在全球的2100多萬個網站域中安裝,而且該數字還在不斷地快速增長。訪問 /usage.php站點,你可以獲得當前的確切資料。
PHP是一個開放原始碼的產品,這就意味著,你可以訪問其原始碼,也可以免費使用、修改並且再次釋出。
PHP最初只是Personal Home Page(個人主頁)的縮寫,但是後來經過修改,採用了GNU命名慣例(GNU = Gnu誷 Not UNIX),如今它是PHP超文字預處理程式的縮寫。
目前,PHP的主要版本是第5版。該版本的Zend引擎經過了完全的重寫,而且還實現了一些主要的語言改進。
PHP的主頁是:。
Zend Technologies的主頁是:。
MySQL是什麼
MySQL是一個快速而又健壯的關聯式資料庫管理系統(RDBMS)。一個資料庫將允許你高效地儲存、搜尋、排序和檢索資料。MySQL伺服器將控制對資料的訪問,從而確保多個使用者可以併發地使用它,同時提供了快速訪問並 且確保只有透過驗證的使用者才能獲得資料訪問。因此,MySQL是一個多使用者、多執行緒的伺服器。它使用了結構化查詢語言(SQL),這是全球通用的標準資料 庫查詢語言。MySQL是在1996年公佈的,但是其開發歷史可以追溯到1979年。它是世界上最受歡迎的開源資料庫,已經多次獲得《Linux Journal》雜誌的讀者選擇獎。
MySQL可以透過一個雙許可模式獲得。我們可以在開源許可(GPL)下使用它,條件是你需要滿足該協議的一些條款。如果希望釋出一個包括MySQL的非GPL應用程式,可以購買一個商業許可。
為什麼要使用PHP和MySQL
當我們準備建立一個站點時,可以選擇使用許多不同的產品。你必須選擇如下:
■ Web伺服器所需的硬體
■ 作業系統
■ Web伺服器軟體
■ 資料庫管理系統
■ 程式語言或指令碼語言
這些產品的選擇具有相互的依賴性。例如,並不是所有作業系統都可以在所有硬體上執行,並不是所有Web伺服器都支援所有程式語言。
本書中,我們沒有也不需要更多地關注硬體、作業系統、Web伺服器軟體。其中一個最主要的原因是PHP和MySQL能在所有主流作業系統和許多非主流系統中執行。
大部分PHP程式碼可以在作業系統和Web伺服器之間匯入/匯出。某些PHP函式是與作業系統的檔案系統相關,但是在本書中,我們儘量標識出這些函式。
無論選擇何種硬體、作業系統和Web伺服器,我們相信你會認真考慮使用PHP和MySQL。
PHP的一些優點
PHP的主要競爭對手是Perl、Microsoft ASP.NET、Ruby(on Rails或其他)、JavaServer Pages(JSP)和ColdFusion。與這些產品比較,PHP具有很多優點,如下所示:
■ 高效能
■ 可擴充套件性
■ 與許多不同資料庫系統的介面
■ 內建許多常見Web任務所需的函式庫
■ 低成本
■ 容易學習和使用
■ 對物件導向的高度支援
■ 可移植性
■ 開發方法的靈活性
■ 原始碼可供使用
■ 技術支援和文件可供使用
接下來我們將詳細介紹這些優點。
效能
PHP的速度非常快。使用一個單獨的廉價的伺服器,就可以滿足每天幾百萬的點選。
Zend Technologies()公司釋出的評測表明PHP的效能要優於其競爭產品。
擴充套件性
PHP具有Rasmus Lerdorf經常提到的“shared-nothing”架構。這就意味著,你可以有效並廉價地對大量伺服器進行水平方向擴充套件。
資料庫整合
對於許多資料庫系統來說,PHP都具有針對它們的內建連線。除了MySQL之外,你可以直接連線到PostgreSQL、mSQL、Oracle、 dbm、FilePro、Hyperwave、Informix、InterBase和Sybase資料庫。PHP 5還提供了針對普通檔案(平面檔案)的內建SQL介面,名為SQLite。
使用開放式資料庫連線標準(ODBC),可以連線到任何提供了ODBC驅動程式的資料庫。
這包括Microsoft產品和許多其他產品。
除了本機函式庫,PHP還提供了資料庫訪問抽象層,名為PHP資料庫物件(PDO),它提供了對資料的一致性訪問,並且倡導了安全的編碼實踐。
內建的函式庫
由於PHP是為Web開發而設計的,它提供了許多內建函式用來執行有用的Web任務。
它可以生成一個影像、連線到Web服務和其他網路服務、解析XML、傳送電子郵件、使用cookie以及生成PDF文件,所有這些任務只需要非常少的幾行程式碼。
成本
PHP是免費的,使用者可以在任何時候從站點免費下載最新版本。
容易學習PHP
PHP的語法是基於其他程式語言的,主要是C和Perl。如果讀者已經瞭解了C或Perl,或者其他類似C的語言,例如C++或Java,那麼幾乎立即就可以高效地使用PHP。
對物件導向的支援
PHP版本5具有設計良好的物件導向特性。如果讀者學習了使用Java或C++進行程式設計,將發現所期望的一些特性(和常見語法),例如繼承、私有和受保 護的屬性和方法、抽象類和方法、介面、建構函式和解構函式。讀者還將發現一些不常見的特性,例如迭代器。該功能的一部分可以在PHP版本3和版本4中獲 得,但是版本5中具有更全面的物件導向支援功能。
可移植性
PHP在許多不同的作業系統中都可以使用。我們可以在類似於UNIX的 免費作業系統中(例如FreeBSD和Linux)編寫PHP程式碼,也可以在商業性的UNIX版本(例如Solaris和IRIX,Mac OS X)或者在Microsoft Windows的不同版本中編寫程式碼。
通常,程式碼不經過任何修改就可以在執行PHP的不同系統中執行。
開發方法的靈活性
PHP允許實現簡單的任務,同樣,也很容易應用到大型應用程式的實現,例如使用基於設計模式的框架(例如,模型-檢視-控制器,MVC)。
原始碼
我們可以訪問PHP的所有原始碼,與商業性的封閉式原始碼產品不同,如果要在該語言中進行修改或者新增新特性,可以免費進行。
我們無須等待開發商來發布補丁,也不需要擔心開發商倒閉或者決定停止對一個產品的支援。
可供使用的技術支援和文件
Zend Technologies()公司,實現PHP的後臺引擎公司,透過提供商業性技術支援和相關的軟體為PHP開發提供支援。
PHP文件和社群都非常成熟,有大量的共享資訊資源。
PHP 5.0的新特性
最近,讀者可以從PHP 4.x版本轉移到PHP 5.0版本。正如讀者期望的那樣,在一個新的主要版本中,它做出了一些重要變更。在這個版本中,PHP後臺的Zend引擎經過了完全的重寫。主要的新特性如下:
■ 透過一個完整的新的物件模型提供了更好的物件導向支援(請參閱第6章)。
■ 可擴充套件和可維護的錯誤處理—異常(請參閱第7章)。
■ XML資料的簡單處理—SimpleXML(請參閱第33章)。
其他變化還包括在PHP的預設安裝中去除了一些擴充套件,並且將這些擴充套件放入PECL庫中,改進了對流的支援以及新增了SQLite。
本書在編寫時,PHP 5.2是當前最新版本,而5.3也將要釋出。PHP 5.2新增了大量有用的特性,如下所示:
■ 新的輸入過濾擴充套件,適用於安全性問題
■ JSON擴充套件,更好的Javascript互動
■ 檔案上傳進度跟蹤
■ 更好的日期和時間處理
■ 客戶端函式庫的大量更新,效能改進(包括Zend引擎中,更好的記憶體管理)和Bug修復
PHP 5.3的關鍵特性
你可能聽說了PHP最新的主要釋出版本PHP 6。在本書編寫時,PHP 6還未釋出,一些主機服務提供商還不會安裝它。但是,PHP 6中的一些關鍵特性可以追溯到PHP 5.3版本,事實上,5.3是一個小版本的釋出,基本上透過了可接受性測試,因此一些主機服務提供商安裝了它(當然,如果你是主機管理員,可以安裝任何喜 歡的版本)。
PHP 5.3中的一些新特性如下所示(相關特性的介紹也會在本書的適當章節給出):
■ 名稱空間的增加。更多資訊,請參閱/language.namespaces。
■ intl擴充套件的增加,它為應用程式的國際化提供幫助,更多資訊,請參閱 net/manual/en/intro.intl.php。
■ phar擴充套件的增加,它應用於建立自包含PHP應用包。更多資訊,請參閱 net/book.phar。
■ fileinfo擴充套件的增加,它應用於檔案處理的改進。更多資訊,請參閱 net/manual/en/book.fileinfo.php。
■ sqlite3擴充套件的增加,它應用於SQLite嵌入式SQL資料庫引擎。更多資訊,請參閱/manual/en/class.sqlite3.php。
■ 支援MySQLnd驅動程式,替代了libmysql;更多資訊,請參閱 wiki/PHP_MYSQLND。
雖然以上包含了PHP 5.3版本的重要特性,但是該版本還包括了大量Bug修復以及對已有功能的改進,例如:
■ 刪除了對早於Windows 2000的Windows作業系統的支援(例如,Windows 98和NT 4)。
■ 確保PCRE、 Reflection和 SPL擴充套件的啟用。
■ 增加一些日期和時間函式,更方便於日期計算和處理。
■ 改進了crypt()、hash()和md5()函式的功能以及OpenSSL擴充套件。
■ 改進了php.ini管理和處理,包括更好的錯誤報告。
■ 繼續對Zend引擎進行調優,實現更好的PHP執行時速度和記憶體的使用。
MySQL的一些優點
MySQL的主要競爭產品包括PostgreSQL、Microsoft SQL Server和Oracle。MySQL具有許多優點,如高效能、低成本、易於配置和學習、可移植性、原始碼可供使用、技術支援可供使用等,接下來,我們將詳細介紹這些優點。效能
不可否認,MySQL的速度是非常快的。在站點,你可以找到許多開發人員的評 測頁面。這些評測結果表明MySQL的執行速度比其競爭產品要快很多。在2002年,《eWeek》雜誌釋出了一個關於實現Web應用程式的5個資料庫的 評測結果。最佳結果是MySQL和成本昂貴得多的Oracle。
低成本
在開放原始碼許可下,MySQL是免費的,而在商業許可下,MySQL也只需要很少的費用。
如果讀者希望將MySQL作為應用程式的一部分重新發布,並且不希望在開放原始碼許可下授權應用程式,那麼必須獲得一個商業許可。如果讀者並不打算釋出應用程式(適用於大多數Web應用程式)或者只開發免費軟體,那麼就不需要購買許可。
便於使用
大多數現代資料庫都使用SQL。如果讀者曾經使用過其他RDBMS,就會很容易使用MySQL。MySQL的安裝也比其他類似產品的安裝要簡單。
可移植性
MySQL可以在許多不同的UNIX系統中使用,同時也可以在Microsoft的Windows系統中使用。
原始碼
和PHP一樣,讀者可以獲得並修改MySQL的原始碼。對大多數使用者來說,在大多數情況下這一點並不重要,但是它消除了後顧之憂,可以確保未來的持續性,並且提供了緊急情況下的選擇。
技術支援可供使用
並不是所有開放原始碼產品都有一家母公司,來提供技術支援、培訓、顧問和認證,但是讀者可以從MySQL AB獲得所有這些服務()。
MySQL 5.0的新特性
MySQL 5.0版本新引入的主要變化包括:
■ 檢視
■ 儲存過程(請參閱第13章)
■ 基本觸發器的支援
■ 對遊標的支援
其他變化還包括多個ANSI標準的相容以及速度的改進。如果讀者還是使用MySQL伺服器的早期4.x版本或3.x版本,應該知道如下特性已經陸續加入到了4.0以後的版本:
■ 對子查詢的支援
■ 用於儲存地理資料的GIS型別
■ 對國際化的改進支援
■ 作為標準,引入了InnoDB這個事務安全的儲存引擎
■ MySQL查詢快取,極大提高了Web應用程式通常會執行的重複查詢速度
本書所使用的示例是基於MySQL 5.1(Beta Community版本)。這個版本還新增了如下支援:
■ 分割槽
■ 基於行的複製
■ 事件排程
■ 將日誌儲存於表
■ MySQL群集、資訊模式、備份過程的改進以及大量的Bug修復
本書的組織結構
本書分為5個部分(除此之外,還有“附錄”):第一篇“使用PHP”,透過一些示例概述了PHP語言的主要部分。每一個例子都是在構建實際電子商務站點時可能用到的例子。在第一篇中,第1章是 “PHP快速入門教程”。如果讀者已經使用過PHP,可以跳過這一章。如果讀者是第一次使用PHP或者是入門程式設計師,那麼可能需要花一些時間在這一章上。 如果讀者非常熟悉PHP,但卻不是很瞭解PHP 5,可能會希望閱讀第6章,因為在PHP 5中,物件導向功能有了非常明顯的變化。
第二篇“使用MySQL”,將介紹一些概念和設計,包括使用關係型資料庫系統(例如MySQL)、使用SQL、使用PHP連線MySQL資料庫以及MySQL的高階技術(例如,安全性和最佳化)的使用。
第三篇“電子商務與安全性”,介紹了使用任何語言開發電子商務站點所涉及的一些常見問題。我們還將介紹如何使用PHP和MySQL來進行使用者身份驗證,以及安全地蒐集、傳輸和儲存資料。
第四篇“PHP的高階技術”,提供了PHP中一些主要內建函式的詳細介紹。我們選擇了一些在建立站點時可能用到的函式庫進行介紹。讀者將學習如何與伺服器進行互動、如何與網路進行互動、影像的生成、時間和資料的操作以及會話變數。
第五篇“建立實用的PHP和MySQL專案”是我們最喜歡的一篇,主要介紹如何解決現實專案中可能遇到的實際問題,例如管理和除錯大型專案。本章提供了一些能夠說明PHP和MySQL強大功能的示例專案。
我們希望得到您的反饋
作為本書的讀者,您是我們最重要的批評者和評價者。我們非常重視您的意見,並且希望知道我們的優點、哪些地方可以改進、您希望看到哪些領域的圖書以及任何您願意給我們的其他建議。
您可以透過電子郵件或直接給我寫信與我聯絡,讓我知道你對本書的評價以及我們可以從哪些方面進行改善。
請注意,我無法為您解答與本書相關的技術問題,而且由於我收到的信件或電子郵件的數量太大,因此我可能無法一一回答。
當您給出意見時,請確認給出了本書的標題和作者,以及您的姓名和電話或電子郵件地址。我們將謹慎地考慮您的建議並與編寫本書的作者和編輯們進行溝通。
電子郵件:feedback@developers-library.info
郵寄地址:Mark Taber
Associate Publisher
Pearson Education, Inc .
800 East 96th Street
Indianapolis, IN 46240 USA
讀者服務
訪問我們的Web站點,並且在informit.com/register進行註冊,將獲得本書的任何更新、下載以及勘誤資訊。作者簡介
Laura Thomson,Mozilla公司的高階軟體工程師。之前,她是OmniTI公司和Tangled Web Design公司的合夥人。此外,Laura曾經在RMIT大學和波士頓顧問集團工作過。她獲得了應用科學(電腦科學)的學士學位和工程學(計算機系統 工程)學士學位。在她的空閒時間,她非常喜歡騎馬,討論免費軟體和開源軟體以及睡覺。Luke Welling,OmniTI公司的一位Web架構師,他經常在一些國際會議(例如,OSCON,ZendCon,MySQLUC,HPCon,OSDC 以及LinuxTag)中就開源和Web開發的話題發表演講。在加入OmniTI公司之前,他曾作為資料庫提供商的Web分析師為Hitwise.com 公司工作。此外,他還是Tangled Web Design公司的獨立顧問。他還在澳大利亞墨爾本的RMIT大學教授電腦科學課程。他獲得了應用科學(電腦科學)的學士學位。在他的空閒時間,他希 望治好他的失眠症。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16502878/viewspace-697800/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP 系列:PHP Web 開發基礎PHPWeb
- PHP開發Web服務PHPWeb
- java 和 php 在 web 開發方面對比分析JavaPHPWeb
- Web 開發手冊——PHP 開發環境搭建WebPHP開發環境
- Java和PHP在Web開發方面的八大對比JavaPHPWeb
- Mac搭建PHP開發環境(PHP+Nginx+MySQL)MacPHP開發環境NginxMySql
- php+mysql+cookie+模組化開發PHPMySqlCookie
- PHP和MySQLPHPMySql
- 如何使用PHP開發高效的WEB系統PHPWeb
- MAMP Pro for Mac(PHP/MySQL開發環境)MacPHPMySql開發環境
- PHP和Python哪個更適合Web開發?Python學習!PHPPythonWeb
- 開啟mysql和php慢日誌方法MySqlPHP
- Web開發技術選型之Java與PHPWebJavaPHP
- web開發語言的選擇:PHP or JAVA薦WebPHPJava
- MNMP (Mac + Nginx + MySQL + PHP) 開發環境搭建MacNginxMySqlPHP開發環境
- Java和Python的Web開發JavaPythonWeb
- PHP 轉 Node 筆記(二. 基礎的Web開發)PHP筆記Web
- 微信開發必備工具 php和java開發語言PHPJava
- windows下搭建Apache+Mysql+PHP開發環境WindowsApacheMySqlPHP開發環境
- CoffeeScript和Sass提高Web開發效率Web
- 從web開發看.NET和Java。薦WebJava
- Web發展中的“明星”——PHPWebPHP
- Web開發Web
- Web前端開發和後端開發有什麼區別?Web前端後端
- mac 下利用自帶的php 和apache 搭建 phpstorm+git+xdebug+mysql 的php開發環境MacPHPApacheORMGitMySql開發環境
- Centos7下配置PHP + MySQL + Nginx開發環境CentOSPHPMySqlNginx開發環境
- 基於Docker搭建PHP+Nginx+MySQL開發環境DockerPHPNginxMySql開發環境
- 專業的PHP/MySQL開發環境:MAMP Pro for MacPHPMySql開發環境Mac
- 《PHP與MySQL動態網站開發》小編手記PHPMySql網站
- PHP開發人員常犯的10個MysqL錯誤PHPMySql
- 利用 Valet 開發和除錯 PHP 專案除錯PHP
- 使用 Docker 和 Laradock 進行 PHP 開發DockerPHP
- 為 Web 開發者準備的 25 個超棒 PHP 開發庫WebPHP
- 移動web開發之畫素和DPRWeb
- 移動前端開發和Web前端開發的不同點介紹前端Web
- [Web開發]微軟的PHP+IIS+WinServer開發培訓資料/示例程式碼Web微軟PHPServer
- php開發memcachedPHP
- PHP開發APIPHPAPI