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

PHP和MySQL Web開發(原書第5版) pdf epub mobi txt 电子书 下载 2025

[美] 盧剋·韋林(Luke Welling),勞拉·湯姆森(Laura Thomson) 著,熊慧珍,武欣,羅雲峰 等 譯
圖書標籤:
  • PHP
  • MySQL
  • Web開發
  • 數據庫
  • 服務器端
  • 編程
  • Web應用
  • 技術
  • 開發
  • 教程
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111587736
版次:1
商品编码:12293611
品牌:机工出版
包装:平装
开本:16开
出版时间:2018-02-01
用纸:胶版纸
页数:632

具体描述

産品特色

編輯推薦

  

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


  

升級內容

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


  

內容簡介

  

全書共分五篇,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公司的軟件工程師,經常在OSCON、ZendCon、MySQLUC、PHPCon、OSDC和LinuxTag等國際會議上就開源和Web開發主題發錶演講。在加入OmniTI公司之前,他曾作為數據庫提供商的Web分析師為Hitwise.com公司工作。此外,他還是Tangled Web Design公司的獨立顧問,並曾在澳大利亞墨爾本RMIT大學教授計算機科學課程。

Laura Thomson是Mozilla公司的研發總監,也是OmniTI公司和Tangled Web Design公司的董事。此外,Laura曾在RMIT大學和波士頓谘詢公司工作過。


精彩書評

  

“我從來沒有購買過如此棒的編程書籍……本書信息量大、容易掌握,文字淺顯易懂,而且與我曾經購買過的其他計算機圖書相比,它給齣瞭示例和實踐建議。”

—Nick Landman


  

“Welling和Thomson撰寫的這本書是我發現的唯*不可或缺的圖書。文字清晰直觀,從來不會浪費我的時間。本書結構閤理,章節篇幅適當而且主題清晰。”

—Wright Sullivan,A&E;工程公司董事長,南卡羅來納-格裏爾


  

“我隻想告訴你,這本書真的太棒瞭!它邏輯清晰,難度適中,有趣易懂,當然,全是有用的信息!”

—CodE-E,奧地利


  

“關於PHP,有幾本非常不錯的入門級圖書,但是Welling和Thomson所撰寫的這本書對那些希望創建復雜而又可靠係統的人來說,是非常優秀的手冊。很明顯,作者在開發專業應用程序方麵經驗豐富,他們不僅教授瞭語言本身,還介紹瞭如何通過良好的軟件工程實踐來使用它。”

—Javier Garcia,Telefonica研發實驗室高級電信工程師,馬德裏


  

“兩天前我開始閱讀本書,現在讀瞭一半。我對它愛不釋手。本書布局和結構嚴謹,讀者可以很快掌握所有概念,示例也具有很強的實用性,是一本不容錯過的好書。”

—Jason B. Lancaster


  

“本書內容很值得信賴,它給齣瞭PHP的快速入門教程,並且全麵地介紹瞭如何使用MySQL來開發Web應用程序。書中還給齣瞭一些完整的示例程序,對於使用PHP創建模塊化、可伸縮的應用程序來說,這些示例是非常不錯的選擇。無論你是PHP新手,還是正在尋找參考書的經驗豐富的開發人員,這本書都是你的明智選擇。”

—Web Dynamic


  

“Welling和Thomson撰寫的這本書的確是學習PHP和MySQL開發的經典著作。它使我意識到編程和數據庫對任何人來說都是可以掌握的;而我隻瞭解本書所介紹內容的極少部分,我完全被它迷住瞭。”

—Tim Luoma TnTLuoma.com


  

“Welling和Thomson撰寫的這本書對於那些希望投入實戰項目的人來說,是一本不錯的參考用書。它包括瞭基於Web的電子郵件客戶端、購物車、社交媒體集成等,從PHP的基礎知識開始介紹,然後介紹MySQL的相關知識。”

—twilight30 on Slashdot


  

“這本書太精彩瞭……Welling和Thomson撰寫的這本書中有我見到過的對正則錶達式、類和對象以及會話等*好的介紹。我感覺本書讓我理解瞭一些我原來不太理解的內容……本書深入地介紹瞭PHP函數和特性,此外還從項目經理的角度介紹瞭現實項目、MySQL集成以及安全性問題。我發現本書各個方麵組織得非常閤理,容易理解。”

—codewalkers.com站點的評論


  

“PHP和MySQL開發人員*棒的參考書,強烈推薦。”

—《The Internet Writing Journal》


  

“這本書太精彩瞭!我是一個經驗豐富的編程人員,因此我並不需要太多的PHP語法介紹;畢竟它非常類似於C/C++。我不瞭解關於數據庫的內容,但是當我準備(在其他項目中)開發一個圖書評論引擎時,我希望找到一本關於使用PHP和MySQL的參考書。我有O扲eilly齣版的《mSQL and MySQL》一書,該書可能是關於純SQL的不錯參考,但是本書在我的參考書中絕對占有一席之地……強烈推薦。”

—Paul Robichaux


  

“我讀過的*棒的編程指南圖書之一。”

—jackofsometrades,芬蘭拉赫蒂


  

“這是一本非常不錯的書,對於學習如何使用這兩個*流行的開源Web開發技術創建Internet應用來說是非常優秀的……書中介紹的項目是本書的閃光點。不但是因為項目介紹和組織的邏輯結構閤理,而且項目的選擇也涵蓋瞭許多Web站點常用的組件。”

—Craig Cecil


  

“本書采用瞭一種簡單的、按部就班的方式嚮程序員介紹PHP語言。因此,我經常發現自己在進行Web設計時需要參考本書。我還在學習關於PHP的新知識,但是這本書給我提供瞭一個學習的基礎,一直以來給瞭我很多幫助。”

—Stephen Ward


  

“本書是少數使我感動並“愛”上的圖書之一。我不能將它放到我的書架中;我必須將它放在一個我伸手可及的地方,這樣我就可以經常翻翻它。本書的結構閤理,措辭簡單而且直觀。在閱讀本書以前,我對PHP和MySQL一無所知。但是在閱讀本書後,我就對開發復雜的Web應用充滿瞭信心,而且掌握瞭足夠的技術。”

—Power Wong


  

“這本書太棒瞭……我嚮任何數據庫驅動的Web應用程序員強烈推薦此書。我希望更多的計算機圖書能夠按這樣的方式進行編寫。”

—Sean C Schertell


  

目錄

本書贊譽

譯者序

前言

作者簡介

第一篇 使用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


前言/序言

譯者序 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下測試和驗證。

PHP的主頁是:http://www.php.net。

Zend Technologies的主頁是:http://www.zend.com。

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是免費的,可以在任何時候從http://www.php.net站點免費下載最新版本。

容易學習

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(www.zend.com)公司通過提供商業性技術支持和相關的軟件為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的速度非常快。在http://www.mysql.com/why-mysql/benchmarks/站點,可以找到許多開發人員的評測頁麵。

低成本

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

易用

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

可移植性

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

源代碼可用

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

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

支持可用

並不是所有的開源産品都有一傢母公司來提供技術支持、培訓、谘詢和認證,但是讀者可以從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和MySQL Web开发(原书第5版)

评分

很好!是正版!推荐购买,值得学习,哈哈哈哈

评分

业余时间看看,,帮助比较大,,纸质书籍看起来更有意思,,内容不错适合入门

评分

书不错,读起来挺好,买了好几本

评分

非常不错,几乎都是圣经书,对学习提升的帮助非常大!

评分

先看看,目测是一本好书,在学mysql和php,618没活动,一狠心就买了,

相关图书

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有