TOP
GOGO開學趣,參考書應有盡有
PHP和MySQL Web開發(原書第5版)(簡體書)
滿額折

PHP和MySQL Web開發(原書第5版)(簡體書)

商品資訊

人民幣定價:129 元
定價
:NT$ 774 元
優惠價
87673
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點:20 點
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

全書共分五篇,31章。第一篇(第1~7章)涵蓋PHP語言的基礎知識,包括PHP快速入門、數據存儲和讀取、數組、字符串操作與正則表達式、代碼重用與函數編寫、面向物件特性以及錯誤和異常處理。第二篇(第8~13章)涵蓋MySQL的基礎知識,包括Web數據庫設計、創建和使用,以及使用PHP從Web訪問MySQL數據庫、MySQL高級管理和高級編程。第三篇(第14~16章)講解Web應用的安全性,分析了Web應用的安全風險、如何構建安全的Web應用,以及使用PHP實現身份認證的方法。第四篇(第17~24章)講解PHP的高級編程技術,包括與文件系統和服務器的交互、使用網絡和協議函數、管理日期和時間、國際化與本地化、圖像生成、使用PHP會話控制、JavaScript與PHP集成,以及PHP的其他有用特性。第五篇(第25~31章)的重點是實戰,該篇從在大型項目中使用PHP和MySQL開始,針對當前*新Web應用開發潮流,介紹了幾個重要的Web產品實現細節,這些項目包括:用戶身份認證和個性化、基於Web的電子郵件客戶端、社交媒體集成和購物車。


作者簡介

Luke Welling,OmniTI公司軟件工程師。

名人/編輯推薦

《PHP和MySQL Web開發(原書第5版)》,是PHP和MySQL Web應用開發方面的“聖經”。書中內容豐富完備,用例簡單實用。既包括PHP語言的基礎知識和編程技巧,又包括MySQL數據庫的使用基礎和實戰沉澱。除此之外,書中還涵蓋國際化本地化以及安全性話題。對於開發安全的、適用於全球用戶的Web應用來說,是一本不可多得的寶典。另外值得一提的是,英文版原書中後4章的實例是在線內容,我們已經將這些內容涵蓋在中文版紙質書中,方便讀者參考。


升級內容

與本書第4版相比,第5版進行了全面更新、重寫和擴展,詳盡介紹了PHP 5.6到7的版本更新和新特性,以及MySQL*新版本的新特性。


譯者序 The Translator's Words

PHP和MySQL依舊是如今比較流行的開源技術之一,非常適用於Web應用的開發。

PHP是一種服務器端腳本語言,可以用於生成動態內容。它功能強大,與HTML腳本融合在一起,並內置有訪問數據庫的功能。

MySQL是基於SQL的、完全網絡化的跨平臺關係型數據庫系統,同時是具有客戶機/服務器體系結構的分布式數據庫管理系統。它具有功能強大、使用簡便、管理方便、運行速度快、安全可靠性強等優點,用戶可利用多種語言編寫訪問MySQL 數據庫的程序。

本書內容豐富完備,示例簡單實用。書中既包括了PHP語言的基礎知識,又包括了MySQL數據庫的使用基礎;既提供了PHP基礎編程技巧,又介紹了PHP與MySQL的實戰沉澱。除此之外,書中還涵蓋了國際化、本地化以及安全性話題。對於開發安全的、適用於全球用戶的Web應用來說,本書的確是一本不可多得的寶典。

本書第一篇和第二篇依舊分別是PHP和MySQL的入門介紹,第三篇探討了Web應用安全問題,第四篇介紹PHP的高級編程技術,第五篇重點在實戰。針對當前最新Web應用開發潮流,介紹了幾個重要的Web產品實現細節,包括設計、計劃、實施以及測試環節。這些實用項目包括:

用戶身份驗證和個性化

基於Web的電子郵件客戶端

社交媒體集成

購物車

第5版在第4版的基礎上進行了全面更新、重寫和擴展,詳盡介紹了PHP 5.6到7的版本更新和新特性,此外還介紹了MySQL最新版本的新特性。

綜觀全書,內容廣泛,風格嚴謹,理論和實踐緊密結合。既有詳細的概念說明,又有復雜而完整的實例代碼,讀者能夠輕松地將自己所學的理論知識付諸實踐。正是出於這個原因,本書適用的讀者非常廣泛。對於初學者來說,本書可以作為教材和參考書;對於有豐富經驗的PHP和MySQL高手,本書也是一本很好的參考手冊,因此本書適用於各個層次的PHP程序員。另外,第5版的中文版也對第4版的一些翻譯錯誤進行了更正。

參加本書翻譯工作的有:熊慧珍、武欣、於廣樂、陶立秋、於苗苗、羅劍鋒、姜燕梅、羅云峰,最後由武欣統稿。

由於譯者水平所限,不當和錯誤之處在所難免,敬請各位專家和讀者批評指正。


譯 者

2017年10月


About the Authors 作者簡介

Luke Welling是OmniTI公司的一名軟件工程師,經常出席一些國際會議(例如,OSCON、ZendCon、MySQLUC、PHPCon、OSDC以及LinuxTag)並就開源和Web開發話題發表演講。在加入OmniTI公司之前,他曾作為數據庫提供商MySQL AB的Web分析師為Hitwise.com公司工作。此外,他還是Tangled Web Design公司的獨立顧問,並曾在澳大利亞墨爾本RMIT大學教授計算機科學課程。他擁有應用科學(計算機科學)的學士學位。

Laura Thomson是Mozilla公司的研發總監。之前,她是OmniTI公司和Tangled Web Design公司的董事。此外,Laura曾經在RMIT大學和波士頓咨詢公司工作過。她擁有應用科學(計算機科學)學士學位和工程學(計算機系統工程)學士學位。閑暇時間,她非常喜歡騎馬,熱衷於免費軟件和開源軟件。

貢獻作者

Julie C. Meloni是一名軟件開發經理以及技術顧問,生活在華盛頓特區。她編著過一些圖書,發表過一些文章,主要集中在基於Web的開發語言和數據庫領域,其中包括暢銷書《Sams Teach Yourself PHP,MySQL, and Apache All in One》。

John Coggeshall是Internet Technology Solutions公司的創始人,該公司是Internet和PHP相關的顧問公司,服務於全球用戶。同時,他還是CoogleNet公司的創始人,該公司是基於WiFi網絡的訂閱服務公司。作為Zend Technologies公司全球服務團隊的資深成員,他從1997年開始使用PHP,目前已經出版了4本相關圖書並發表了超過100篇關於PHP技術的文章。

Jennifer Kyrnin是一名Web設計人員,自1995年開始從事Web設計和圖書編寫。她出版的圖書包括《Sams Teach Yourself Bootstrap in 24 Hours》《Sams Teach Yourself Responsive Web Design in 24 Hours》以及《Sams Teach Yourself HTML5 Mobile Application Development in 24 Hours》。



前 言 Preface

歡迎來到PHP和MySQL Web開發的世界。在本書中,我們將把使用PHP與MySQL的經驗和心得體會毫無保留地分享給你,PHP和MySQL是目前最熱門的兩個Web開發工具。

前言主要介紹以下內容:

為什麼要學習本書

學習本書將掌握哪些知識

PHP和MySQL及其強大之處

PHP和MySQL最新版本變化

本書組織結構

下面,就讓我們開始吧!

為什麼要學習本書

本書將介紹如何創建可交互的Web應用,包括從最簡單的訂單表單到復雜而又安全的Web應用。此外,讀者還將了解如何使用開源代碼技術來實現它。

本書的目標讀者群是已經了解了HTML的基礎知識,並且以前曾經使用過一些現代編程語言進行過程序開發的讀者,但是並不要求讀者從事過Web編程或者使用過關係型數據庫。如果你是入門級程序員,你也將發現本書是非常實用的,但是你可能會需要更長的時間來吸收和消化它。我們盡量做到不遺漏任何基本概念,但是在介紹這些基本概念的時候都比較簡略。本書的典型讀者是希望掌握PHP和MySQL並致力於創建大型或電子商務類型Web站點的人。有些讀者可能已經使用過其他Web開發語言;如果是這樣,就更容易掌握本書的內容。

編寫本書第1版的原因在於,我們已經厭倦了尋找那些充其量只是最基本的PHP函數參考的圖書。那些圖書是有用的,但是當老闆或客戶要求你趕快編寫一個購物車時,那些圖書無法幫助你。我們盡量使本書中的每一個示例都有實用價值。許多示例代碼可以在Web站點上直接使用,而大多數代碼只要稍做修改就可以直接使用。

學習本書將掌握哪些知識

學習本書後,讀者將能夠創建實用的動態Web站點。如果你已經使用過普通HTML創建Web站點,你將認識到這種方法的局限性。一個純HTML網站的靜態內容就只能是靜態的。除非專門對其進行手動更新,否則其內容不會發生變化。用戶也無法以任何有意義的方式與站點進行交互。

使用一種編程語言(例如,PHP)和數據庫(例如,MySQL),可以創建動態的站點,也可以自定義站點並且在站點中包含實時信息。

在本書中,即使是在介紹性章節,我們也是以實戰應用的介紹為重點。本書從一個簡單系統開始,然後介紹PHP和MySQL的不同部分。

之後討論與創建一個真實Web站點相關的安全性和身份驗證方面的問題,並且介紹如何使用PHP和MySQL來實現這些功能。通過討論JavaScript及其在Web應用開發中的角色,介紹如何集成協同前端和後端技術。

本書第五篇將介紹如何開發真實項目,並且和讀者一起設計、計劃及構建如下項目:

用戶身份驗證和個性化

基於Web的電子郵件客戶端

社交媒體集成

這些項目都是可以直接使用的,或者可以經過一定的修改來滿足讀者的實際需要。之所以選擇這些項目是因為我們相信它們是Web程序員最常面臨的項目。如果讀者的需求有所不同,本書也可以幫助大家實現目標。

什麼是PHP

PHP是一種專門為Web設計的服務器端腳本語言。在一個HTML頁面中,可以嵌入PHP代碼,這些代碼在頁面每次被訪問時執行。PHP代碼將在Web服務器中被解釋並且生成HTML或訪問者可見的輸出。

PHP出現於1994年,最初只是Rasmus Lerdorf一個人的投入。後來被一些天才所接受,它經歷了數次重大的重寫,才變成了我們今天所看到的廣為使用的、成熟的PHP。根據Google公司的Greg Michillie 2014年5月的數據, PHP已經運行於全球75%的Web站點,而到2016年6月,這個數據已經變成82%。

PHP是一個開源的項目,這就意味著,你可以訪問其源代碼,也可以免費使用、修改並且再次發布。

PHP最初只是Personal Home Page(個人主頁)的縮寫,但是後來經過修改,采用了GNU命名慣例(GNU = Gnu抯 Not UNIX),如今它是PHP超文本預處理程序(PHP,Hypertext Preprocessor)的縮寫。

目前,PHP的主要版本是7。該版本的Zend引擎經過完全重寫,而且還實現了一些主要的語言改進。本書所有代碼均已在PHP 7以及PHP 5.6下測試和驗證。

MySQL是什麼

MySQL(發音為My-Ess-Que-Ell)是一個快速而又健壯的關係型數據庫管理系統(Relational Database Management System,RDBMS)。數據庫將允許你高效地存儲、搜索、排序和檢索數據。MySQL服務器將控制對數據的訪問,從而確保多個用戶可以並發訪問數據、可以快速訪問數據以及只有授權用戶才能獲得數據訪問。因此,MySQL是一個多用戶、多線程的服務器。它使用了結構化查詢語言(SQL),該語言是標準數據庫查詢語言。MySQL是在1996年公布的,但是其開發歷史可以追溯到1979年。它是世界上最受歡迎的開源數據庫,已經多次獲得“Linux Journal Readers?Choice”大獎。

MySQL可以在雙許可模式下使用。可以在開源許可(GPL)下免費使用它,條件是滿足該協議的一些條款。如果希望發布一個包括MySQL的非GPL應用程序,可以購買一個商業許可。

為什麼要使用PHP和MySQL

當我們準備創建一個站點時,可以選擇使用許多不同的產品。

你必須選擇:

運行Web服務器的宿主:云、虛擬私有服務器或真實硬件

操作系統

Web服務器軟件

數據庫管理系統或其他數據存儲

編程語言或腳本語言

也可以采用多種數據存儲的混合架構。這些產品的選擇具有相互依賴性。例如,並不是所有的操作系統都可以在所有的硬件上運行,並不是所有的Web服務器都支持所有的編程語言,等等。

在本書中,我們不會過於關注硬件、操作系統或Web服務器軟件,我們也不需要關注這些。PHP和MySQL的一個最佳特性就是它們能夠在任何主流操作系統和許多非主流操作系統上工作。

大部分PHP代碼在不同的操作系統和Web服務器上都是可移植的。但是,也有一些與操作系統的文件系統相關的PHP函數,在本書以及PHP手冊中,這些函數都將被明確標識出來。

無論選擇何種硬件、操作系統和Web服務器,我們相信你會認真考慮PHP和MySQL。

PHP的一些優點

PHP的主要競爭對手是Python、Ruby on Rails、Node.js、Perl、Microsoft.NET和Java。

與這些產品相比,PHP具有很多優點,如下所示:

高性能

可擴展性

支持許多不同數據庫系統的接口

內置許多常見Web任務所需的函數庫

低成本

容易學習和使用

強面向物件支持

可移植性

開發方法的靈活性

源代碼可用

可用的技術和文檔支持

接下來將詳細介紹這些優點。

性能

PHP速度非常快。使用一個獨立的廉價服務器,就可以滿足每天幾百萬次的點擊量。它支持的Web應用小到電子郵件表單,大到整個站點,例如Facebook和Esty。

擴展性

PHP具有Rasmus Lerdorf經常提到的“shared-nothing”架構。這就意味著,可以使用大量普通服務器高效廉價地實現容量水平擴展。

數據庫集成

對於許多數據庫系統來說,PHP都具有針對它們的原生連接支持。除了MySQL之外,可以直接連接到PostgreSQL、Oracle、MongoDB和MSSQL數據庫。PHP 5和PHP 7還增加了針對普通文件(SQLite)的內置SQL接口。

使用開放式數據庫連接標準(ODBC),可以連接到提供了ODBC驅動程序的任何數據庫。這包括Microsoft產品和許多其他產品。

除了原生函數庫之外,PHP還提供了數據庫訪問抽象層,名為PHP數據庫物件(PDO),它提供了對數據的一致性訪問,並且倡導安全的編碼實踐。

內置函數庫

由於PHP是為Web開發而設計的,因此它提供了許多內置函數來執行有用的Web任務。可以立即生成圖像、連接到Web服務和其他網絡服務、解析XML、發送電子郵件、使用cookie以及生成PDF文檔,所有這些任務只需要少量代碼行。

成本

PHP是免費的,可以在任何時候從站點免費下載最新版本。

容易學習

PHP的語法是基於其他編程語言的,主要是C和Perl。如果讀者已經了解了C或Perl,或者其他類似C的語言,例如C++或Java,那麼幾乎可以立即高效地使用PHP。

面向物件支持

PHP 5具有設計良好的面向物件特性,這些特性在PHP 7裡得到改進。如果讀者學過Java或C++編程,將發現你熟悉的一些特性(和常見語法),例如繼承、私有和受保護的屬性及方法、抽象類和方法、接口、構造函數和析構函數。讀者還將發現一些不常見的特性,例如iterator和trait。

可移植性

PHP可用於多種操作系統。可以在類似於UNIX的免費操作系統(例如FreeBSD和Linux)、商業性的UNIX版本、Mac OS X或者Microsoft Windows的不同版本中編寫PHP代碼。

通常,代碼不經過任何修改就可以運行於不同的操作系統。

開發方法的靈活性

通過基於設計模式的框架(例如,模型-視圖-控制器,MVC),使用PHP,可以快速實現簡單任務,或開發大型應用。

源代碼可用

可以訪問PHP的所有源代碼。與商業性的封閉式源代碼產品不同,可以免費在PHP中修改或者添加新特性。

我們無須等待開發商來發布補丁,也不需要擔心開發商倒閉或者決定停止對一個產品的支持。

可用的技術和文檔支持

Zend Technologies公司通過提供商業性技術支持和相關的軟件為PHP開發提供支持。

PHP文檔和社區都非常成熟,有大量的共享信息資源。

PHP 7.0的關鍵特性

2015年12月,期待已久的PHP 7終於問世。正如前面介紹的,本書將覆蓋PHP 5.6和PHP 7,你可能會問“那PHP 6呢”?答案很簡單:沒有PHP 6,PHP 6沒有正式發布過。但是,的確有開發人員開發過PHP 6,但最終沒有取得成果。曾經也有些關於PHP 6的項目規劃,但這些規劃帶來的復雜性讓PHP開發團隊最終放棄了PHP 6。PHP 7不是PHP 6,它並沒有包含PHP 6的代碼和特性,因此PHP 7有其自己的重點—性能。

在底層,PHP 7包含了Zend引擎的重構,為許多Web應用帶來了明顯的性能提升:有些甚至提升了100%!雖然PHP 7提升了性能,減少了內存使用量,但也引入了一些向下兼容的問題。事實上,PHP 7引入了非常少的向下兼容問題。在本書後續內容中,如果存在向下兼容問題,我們將專門介紹它,這樣可以確保本書內容適用於PHP 5.6和PHP 7,畢竟在本書編寫時,PHP 7還沒有被商業性Web主機服務提供商廣泛應用。

MySQL的一些優點

在關係型數據庫領域,MySQL的主要競爭產品包括PostgreSQL、Microsoft SQL Server和Oracle。在Web應用開發領域,也有使用非SQL非關係型數據庫(例如MongoDB)的趨勢。接下來介紹為何MySQL仍舊適用於Web應用。

MySQL具備很多優點,包括:

高性能

低成本

易於配置和學習

可移植性

源代碼可用

支持可用

下面將詳細介紹以上優點。

性能

不可否認,MySQL的速度非常快。可以找到許多開發人員的評測頁面。

低成本

在開源許可下,MySQL是免費的,而在商業許可下,MySQL也只需要很少的費用。如果讀者希望將MySQL作為應用程序的一部分重新發布,並且不希望在開源許可下授權應用程序,那麼必須獲得一個商業許可。如果讀者並不打算發布應用程序(適用於大多數Web應用)或者只是開發免費軟件,那麼就不需要購買許可。

易用

大多數現代數據庫都使用SQL。如果讀者曾經使用過其他的RDBMS,就能快速上手MySQL。MySQL的設置也比其他類似產品的設置簡單。

可移植性

MySQL可以在許多不同的UNIX系統中使用,同時也可以在Microsoft的Windows系統中使用。

源代碼可用

與PHP一樣,讀者可以獲得並修改MySQL的源代碼。對大多數用戶來說,基本上不需要對MySQL源代碼進行修改,但是由於有了源代碼訪問,它消除了開發者的後顧之憂,可以確保未來的持續性,並且提供了緊急情況下的選擇。

事實上,目前MySQL也出現了一些分支,例如MariaDB,它們也由MySQL的原開發人員開發(包括Michael ‘Monty’ Widenius),讀者可以考慮使用。

支持可用

並不是所有的開源產品都有一家母公司來提供技術支持、培訓、咨詢和認證,但是讀者可以從Oracle獲得所有這些服務(因為Oracle收購了Sun公司,而Sun公司之前收購了MySQL AB)。

MySQL 5.x的新特性

在本書編寫時,MySQL的最新版本是5.7。

在最近幾個版本中,MySQL新引入的特性包括:

大範圍的安全提升

InnoDB表的FULLTEXT支持

InnoDB的非SQL API支持

分區支持

復制改進,包括基於行的復制和GTID

線程池

可插拔驗證

多核擴展性

更好的診斷工具

InnoDB作為默認引擎

IPv6支持

插件API

事件調度

自動升級

其他變化包括更多ANSI標準支持以及性能提升。

如果還在使用MySQL 4.x或3.x版本,你應該了解從MySQL 4.0版本開始新增加的特性:

視圖

存儲過程

觸發器和遊標

子查詢支持

存儲地理數據的GIS類型

國際化支持改進

事務安全存儲引擎InnoDB

MySQL查詢緩存,它極大地提升了Web應用常有的重復性查詢的查詢速度

本書的組織結構

本書分為五個部分(除此之外,還有附錄)。

第一篇(使用PHP),通過一些示例概述了PHP語言的主要部分。每一個示例都是在構建真實電子商務站點時可能用到的示例,而不是一些泛泛的代碼示例。如果讀者已經使用過PHP,可以跳過第1章。如果讀者是PHP新手或者是入門程序員,那麼可能需要花一些時間閱讀第1章。

第二篇(使用MySQL)將介紹一些概念和設計,這些概念和設計包括使用關係型數據庫系統(例如MySQL)、使用SQL、使用PHP連接MySQL數據庫,以及MySQL高級技術(例如,安全性和優化)的使用。

第三篇(Web應用安全性)介紹了使用任何語言開發Web應用所涉及的常見問題。還將介紹如何使用PHP和MySQL來進行用戶身份驗證,以及安全地搜集、傳輸和保存數據。

第四篇(PHP高級編程技術)提供了PHP中一些主要內置函數的詳細介紹。我們選擇了一些在創建Web應用時可能用到的函數庫進行介紹。讀者將學會如何與服務器進行交互、如何與網絡進行交互、圖像的生成、日期時間的操作以及會話處理。

第五篇(構建實用的PHP和MySQL項目)是我們最喜歡的一篇,主要介紹如何解決真實項目中可能遇到的實際問題,例如管理和調試大型項目,提供了一些能夠說明PHP和MySQL強大功能的示例項目。

小結

我們希望你能喜歡本書,享受學習PHP和MySQL的過程,就像我們開始使用這些產品時的感受一樣。PHP和MySQL的確是非常不錯的產品。很快,你就能夠加入成千上萬的Web開發人員行列,同他們一起使用這些健壯、功能強大的工具來構建動態、實時的Web應用。


目次

本書贊譽

譯者序

前言

作者簡介

第一篇 使用PHP

第1章 PHP快速入門教程2

1.1 開始之前:了解PHP3

1.2 創建示例Web應用:Bob汽車零部件商店3

1.2.1 創建訂單表單3

1.2.2 表單處理 5

1.3 在HTML中嵌入PHP5

1.3.1 PHP標記6

1.3.2 PHP語句7

1.3.3 空格7

1.3.4 注釋 8

1.4 添加動態內容8

1.4.1 調用函數9

1.4.2 使用date()函數 9

1.5 訪問表單變量10

1.5.1 表單變量 10

1.5.2 字符串連接12

1.5.3 變量和字面量12

1.6 理解標識符 13

1.7 檢查變量類型 14

1.7.1 PHP的數據類型 14

1.7.2 類型強度 14

1.7.3 類型轉換 15

1.7.4 可變變量 15

1.8 聲明和使用常量 16

1.9 理解變量作用域 16

1.10 使用操作符 17

1.10.1 算術操作符 18

1.10.2 字符串操作符18

1.10.3 賦值操作符 19

1.10.4 比較操作符 21

1.10.5 邏輯操作符 22

1.10.6 位操作符 22

1.10.7 其他操作符 23

1.11 計算表單總金額 25

1.12 理解操作符優先級和結合性 26

1.13 使用變量處理函數27

1.13.1 測試和設置變量類型 27

1.13.2 測試變量狀態 28

1.13.3 變量的重解釋 29

1.14 根據條件進行決策 29

1.14.1 if語句 29

1.14.2 代碼塊 30

1.14.3 else語句 30

1.14.4 elseif語句 31

1.14.5 switch語句 32

1.14.6 比較不同條件 33

1.15 通過迭代實現重復動作 34

1.15.1 while循環 35

1.15.2 for循環和foreach循環 36

1.15.3 do...while循環 37

1.16 從控制結構或腳本中跳出 38

1.17 使用其他控制結構語法 38

1.18 使用declare 39

1.19 下一章 39

第2章 數據存儲和讀取40

2.1 保存數據以便後期使用 40

2.2 存儲和獲取Bob的訂單 41

2.3 文件處理 41

2.4 打開文件 42

2.4.1 選擇文件模式 42

2.4.2 使用fopen()打開文件 42

2.4.3 通過FTP或HTTP打開文件 44

2.4.4 解決打開文件時可能遇到的問題 45

2.5 寫文件 47

2.5.1 fwrite()的參數 47

2.5.2 文件格式 47

2.6 關閉文件 48

2.7 讀文件 50

2.7.1 以只讀模式打開文件:fopen()51

2.7.2 知道何時讀完文件:feof()51

2.7.3 每次讀取一行數據:fgets()、fgetss()和fgetcsv() 52

2.7.4 讀取整個文件:readfile()、fpassthru()、file()以及file_get_contents()53

2.7.5 讀取一個字符:fgetc() 53

2.7.6 讀取任意長度:fread()54

2.8 使用其他文件函數 54

2.8.1 查看文件是否存在:file_exists() 54

2.8.2 確定文件大小:filesize() 55

2.8.3 刪除一個文件:unlink()55

2.8.4 在文件中定位:rewind()、fseek()和ftell() 55

2.9 文件鎖定 56

2.10 更好的方式:數據庫管理系統 57

2.10.1 使用普通文件的幾個問題 58

2.10.2 RDBMS是如何解決這些問題的 58

2.11 進一步學習 59

2.12 下一章 59

第3章 使用數組60

3.1 什麼是數組 60

3.2 數字索引數組 61

3.2.1 數字索引數組的初始化 61

3.2.2 訪問數組內容 62

3.2.3 使用循環訪問數組 63

3.3 使用不同索引的數組 64

3.3.1 初始化數組 64

3.3.2 訪問數組元素 64

3.3.3 使用循環語句 64

3.4 數組操作符 66

3.5 多維數組 66

3.6 數組排序 69

3.6.1 使用sort()函數 69

3.6.2 使用asort()函數和ksort()函數對數組排序 70

3.6.3 反向排序 70

3.7 多維數組排序 70

3.7.1 使用array_multisort()函數71

3.7.2 用戶定義排序 71

3.7.3 自定義排序函數的反序 73

3.8 對數組進行重新排序 73

3.8.1 使用shuffle()函數 73

3.8.2 逆序數組內容75

3.9 從文件載入數組 75

3.10 執行其他數組操作 79

3.10.1 在數組中瀏覽:each()、current()、reset()、end()、next()、pos()和prev()79

3.10.2 對數組每一個元素應用函數:array_walk() 80

3.10.3 統計數組元素個數:count()、sizeof()和array_count_values() 81

3.10.4 將數組轉換成標量變量:extract() 81

3.11 進一步學習 83

3.12 下一章 83

第4章 字符串操作與正則表達式84

4.1 創建一個示例應用:智能表單郵件 84

4.2 字符串的格式化86

4.2.1 字符串截斷:chop()、ltrim()和trim() 87

4.2.2 格式化字符串以便輸出 87

4.3 使用字符串函數連接和分割字符串93

4.3.1 使用函數explode()、implode()和join() 93

4.3.2 使用strtok()函數 94

4.3.3 使用substr()函數 95

4.4 字符串比較 96

4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp() 96

4.4.2 使用strlen()函數判斷字符串長度 96

4.5 使用字符串函數匹配和替換子字符串 97

4.5.1 在字符串中查找字符串:strstr()、strchr()、strrchr()和stristr() 97

4.5.2 查找子字符串的位置:strpos()和strrpos() 98

4.5.3 替換子字符串:str_replace()和substr_replace() 99

4.6 正則表達式的介紹 100

4.6.1 基礎知識 100

4.6.2 分隔符101

4.6.3 字符類和類型 101

4.6.4 重復 102

4.6.5 子表達式 102

4.6.6 子表達式計數 103

4.6.7 定位到字符串的開始或末尾 103

4.6.8 分支103

4.6.9 匹配特殊字符 103

4.6.10 元字符一覽 104

4.6.11 轉義序列104

4.6.12 回溯引用105

4.6.13 斷言105

4.6.14 在智能表單中應用 106

4.7 用正則表達式查找子字符串 107

4.8 用正則表達式替換子字符串 107

4.9 使用正則表達式分割字符串 108

4.10 進一步學習 109

4.11 下一章 109

第5章 代碼重用與函數編寫110

5.1 代碼重用的好處 110

5.1.1 成本111

5.1.2 可靠性 111

5.1.3 一致性 111

5.2 使用require()和include()函數 111

5.2.1 使用require()函數引入代碼112

5.2.2 使用require()制作Web站點模板113

5.2.3 使用auto_prepend_file和 auto_append_file 118

5.3 使用PHP函數 119

5.3.1 調用函數 119

5.3.2 調用未定義函數 120

5.3.3 理解大小寫和函數名稱121

5.4 自定義函數121

5.5 了解函數基本結構 122

5.6 參數使用 123

5.7 理解作用域126

5.8 引用傳遞和值傳遞128

5.9 使用return關鍵字 129

5.10 遞歸實現 131

5.11 進一步學習 134

5.12 下一章 134

第6章 面向物件特性135

6.1 理解面向物件概念 135

6.2 在PHP中創建類、屬性和操作 138

6.3 類的實例化139

6.4 使用類屬性 140

6.5 調用類操作141

6.6 使用private和public關鍵字控制訪問 141

6.7 編寫訪問器函數142

6.8 在PHP中實現繼承 143

6.9 使用Trait149

6.10 類設計 151

6.11 編寫自定義類代碼 151

6.12 理解PHP面向物件高級功能 158

6.13 下一章 170

第7章 錯誤和異常處理 171

7.1 異常處理的概念 171

7.2 Exception類173

7.3 用戶自定義異常 174

7.4 Bob汽車零部件商店應用的異常 176

7.5 異常和PHP的其他錯誤處理機制 179

7.6 進一步學習 180

7.7 下一章 180

第二篇 使用MySQL

第8章 Web數據庫設計182

8.1 關係型數據庫的概念 183

8.2 設計Web數據庫185

8.3 Web數據庫架構190

8.4 進一步學習191

8.5 下一章191

第9章 Web數據庫創建192

9.1 使用MySQL監視程序193

9.2 登錄MySQL194

9.3 創建數據庫和用戶195

9.4 設置用戶與權限195

9.5 MySQL權限系統介紹196

9.6 設置Web用戶201

9.7 使用正確的數據庫202

9.8 創建數據庫表202

9.9 理解MySQL標識符208

9.10 選擇列數據類型209

9.11 進一步學習213

9.12 下一章213

第10章 使用MySQL數據庫214

10.1 什麼是SQL214

10.2 在數據庫中插入數據215

10.3 從數據庫讀取數據217

10.4 更新數據庫記錄229

10.5 創建後修改表230

10.6 刪除數據庫記錄232

10.7 刪除表233

10.8 刪除數據庫233

10.9 進一步學習233

10.10 下一章233

第11章 使用PHP從Web訪問MySQL數據庫234

11.1 Web數據庫架構及工作原理234

11.2 從Web查詢數據庫238

11.3 向數據庫寫入數據243

11.4 使用其他PHP與數據庫交互接口247

11.5 進一步學習250

11.6 下一章250

第12章 MySQL高級管理251

12.1 深入理解權限系統251

12.2 提升MySQL數據庫安全257

12.3 獲取數據庫的更多信息259

12.4 優化數據庫265

12.5 MySQL數據庫備份266

12.6 MySQL數據庫恢復267

12.7 實現復制267

12.8 進一步學習269

12.9 下一章269

第13章 MySQL高級編程270

13.1 LOAD DATA INFILE語句270

13.2 存儲引擎271

13.3 事務272

13.4 外鍵273

13.5 存儲過程274

13.6 觸發器281

13.7 進一步學習283

13.8 下一章283

第三篇 Web應用安全性

第14章 Web應用安全風險286

14.1 識別面臨的安全威脅286

14.2 了解對手292

14.3 下一章293

第15章 構建安全的Web應用294

15.1 安全策略294

15.2 代碼安全296

15.3 Web服務器和PHP的安全306

15.4 數據庫服務器的安全308

15.5 保護網絡310

15.6 計算機和操作系統的安全312

15.7 災難計劃313

15.8 下一章313

第16章 使用PHP實現身份驗證方法314

16.1 識別訪問者314

16.2 實現訪問控制315

16.3 使用基本認證320

16.4 在PHP中使用基本認證320

16.5 使用Apache的.htaccess基本認證321

16.6 創建自定義認證324

16.7 進一步學習325

16.8 下一章325

第四篇 PHP高級編程技術

第17章 與文件系統和服務器交互328

17.1 上傳文件328

17.2 使用目錄函數336

17.3 與文件系統交互341

17.4 使用程序執行函數344

17.5 與環境交互:getenv()和putenv()347

17.6 進一步學習347

17.7 下一章347

第18章 使用網絡和協議函數348

18.1 了解可用協議348

18.2 發送和讀取郵件349

18.3 使用其他站點數據349

18.4 使用網絡查詢函數352

18.5 備份或鏡像文件355

18.6 進一步學習363

18.7 下一章363

第19章 管理日期和時間364

19.1 在PHP中獲得日期和時間364

19.2 PHP和MySQL的日期格式互轉371

19.3 在PHP中計算日期372

19.4 在MySQL中計算日期373

19.5 使用微秒374

19.6 使用日歷函數375

19.7 進一步學習375

19.8 下一章376

第20章 國際化與本地化377

20.1 本地化不只是翻譯377

20.2 理解字符集378

20.3 創建可本地化頁面基礎結構380

20.4 在國際化應用中使用gettext()函數383

20.5 進一步學習386

20.6 下一章386

第21章 生成圖像387

21.1 設置PHP圖像支持387

21.2 理解圖像格式388

21.3 創建圖像389

21.4 在其他頁面中使用自動創建的圖像393

21.5 使用文本和字體創建圖像394

21.6 繪制圖形圖像數據401

21.7 使用其他圖像函數409

21.8 下一章409

第22章 使用PHP會話控制410

22.1 什麼是會話控制410

22.2 理解基本會話功能410

22.3 實現簡單會話412

22.4 創建簡單會話示例414

22.5 配置會話控制416

22.6 使用會話控制實現身份驗證417

22.7 下一章423

第23章 JavaScript與PHP集成424

23.1理解AJAX424

23.2 jQuery概述425

23.3 在Web應用中使用jQuery425

23.4 在PHP中使用jQuery和AJAX434

23.5 進一步學習445

23.6 下一章445

第24章 PHP的其他有用特性446

24.1 字符串計算函數:eval()446

24.2 終止執行:die()和exit()447

24.3 序列化變量和物件448

24.4 獲取PHP環境信息448

24.5 臨時修改運行時環境450

24.6 高亮源代碼451

24.7 在命令行上使用PHP452

24.8 下一章453

第五篇 構建實用的PHP和MySQL項目

第25章 在大型項目中使用PHP和MySQL456

25.1 在Web開發中應用軟件工程技術457

25.2 規劃和運營Web應用項目457

25.3 代碼重用458

25.4 編寫可維護代碼458

25.5 實現版本控制462

25.6 選擇開發環境463

25.7 項目文檔化463

25.8 原型定義464

25.9 隔離邏輯和內容464

25.10 代碼優化465

25.11 測試466

25.12 進一步學習466

25.13 下一章467

第26章 調試和日志468

26.1 編程錯誤468

26.1.1 語法錯誤468

26.1.2 運行時錯誤469

26.1.3 邏輯錯誤474

26.2 變量調試輔助475

26.3 錯誤報告級別477

26.4 修改錯誤報告設置478

26.5 觸發自定義錯誤479

26.6 錯誤日志記錄480

26.7 錯誤日志文件482

26.8 下一章483

第27章 構建用戶身份驗證和個性化484

27.1 解決方案組件484

27.2 解決方案概述486

27.3 實現數據庫487

27.4 實現基本網站488

27.5 實現用戶身份驗證491

27.6 實現書簽存儲和讀取507

27.7 實現書簽推薦513

27.8 考慮可能的擴展516

第28章 使用Laravel構建基於Web的電子郵件客戶端(第一部分)517

28.1 Laravel 5介紹517

第29章 使用Laravel構建基於Web的電子郵件客戶端(第二部分) 536

29.1 使用Laravel構建簡單的IMAP客戶端536

29.2 創建基於Web的電子郵件客戶端561

29.3 小結581

第30章 社交媒體集成分享以及驗證582

30.1 OAuth:Web服務認證582

30.2 小結594

第31章 構建購物車595

31.1 解決方案組件595

31.2 解決方案概述597

31.3 實現數據庫599

31.4 實現在線類目601

31.4.3 顯示圖書詳情607

31.5 實現購物車608

31.6 實現支付622

31.7 實現管理界面624

31.8 擴展項目631

附錄A 安裝Apache、PHP和MySQL632


購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 673
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區