PHP和MySQL Web開發

hzbook2008發表於2011-06-13
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多萬個網站域中安裝,而且該數字還在不斷地快速增長。訪問http://www.php.net /usage.php站點,你可以獲得當前的確切資料。
  PHP是一個開放原始碼的產品,這就意味著,你可以訪問其原始碼,也可以免費使用、修改並且再次釋出。
  PHP最初只是Personal Home Page(個人主頁)的縮寫,但是後來經過修改,採用了GNU命名慣例(GNU = Gnu誷 Not UNIX),如今它是PHP超文字預處理程式的縮寫。
  目前,PHP的主要版本是第5版。該版本的Zend引擎經過了完全的重寫,而且還實現了一些主要的語言改進。
  PHP的主頁是:http://www.php.net。
  Zend Technologies的主頁是:http://www.zend.com。

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(http://www.zend.com)公司釋出的評測表明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是免費的,使用者可以在任何時候從http://www.php.net站點免費下載最新版本。
  容易學習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(www.zend.com)公司,實現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中的一些新特性如下所示(相關特性的介紹也會在本書的適當章節給出):
  ■ 名稱空間的增加。更多資訊,請參閱http://www.php.net/language.namespaces。
  ■ intl擴充套件的增加,它為應用程式的國際化提供幫助,更多資訊,請參閱http://www.php. net/manual/en/intro.intl.php。
  ■ phar擴充套件的增加,它應用於建立自包含PHP應用包。更多資訊,請參閱http://www.php. net/book.phar。
  ■ fileinfo擴充套件的增加,它應用於檔案處理的改進。更多資訊,請參閱http://www.php. net/manual/en/book.fileinfo.php。
  ■ sqlite3擴充套件的增加,它應用於SQLite嵌入式SQL資料庫引擎。更多資訊,請參閱http://www.php.net/manual/en/class.sqlite3.php。
  ■ 支援MySQLnd驅動程式,替代了libmysql;更多資訊,請參閱http://forge.mysql.com/ 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的速度是非常快的。在http://web.mysql.com/benchmark.html站點,你可以找到許多開發人員的評 測頁面。這些評測結果表明MySQL的執行速度比其競爭產品要快很多。在2002年,《eWeek》雜誌釋出了一個關於實現Web應用程式的5個資料庫的 評測結果。最佳結果是MySQL和成本昂貴得多的Oracle。
  低成本
  在開放原始碼許可下,MySQL是免費的,而在商業許可下,MySQL也只需要很少的費用。
  如果讀者希望將MySQL作為應用程式的一部分重新發布,並且不希望在開放原始碼許可下授權應用程式,那麼必須獲得一個商業許可。如果讀者並不打算髮布應用程式(適用於大多數Web應用程式)或者只開發免費軟體,那麼就不需要購買許可。
  便於使用
  大多數現代資料庫都使用SQL。如果讀者曾經使用過其他RDBMS,就會很容易使用MySQL。MySQL的安裝也比其他類似產品的安裝要簡單。
  可移植性
  MySQL可以在許多不同的UNIX系統中使用,同時也可以在Microsoft的Windows系統中使用。
  原始碼
  和PHP一樣,讀者可以獲得並修改MySQL的原始碼。對大多數使用者來說,在大多數情況下這一點並不重要,但是它消除了後顧之憂,可以確保未來的持續性,並且提供了緊急情況下的選擇。
  技術支援可供使用
  並不是所有開放原始碼產品都有一家母公司,來提供技術支援、培訓、顧問和認證,但是讀者可以從MySQL AB獲得所有這些服務(www.mysql.com)。
  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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章