3dwoo大學簡體電腦書店
PHP 7開發寶典(第4版)
( 簡體 字)
作者:[英] 戴維·帕瓦斯(David Powers)著 類別:1. -> 程式設計 C113 -> PHP
譯者:張琦 張楚雄 譯
出版社:清華大學出版社PHP 7開發寶典(第4版) 3dWoo書號: 53889
詢問書籍請說出此書號!
有庫存
NT售價: 640
出版日:1/1/2021
頁數:554
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787302566281 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第1章PHP介紹和PHP使用對象1
1.1PHP的演進2
1.2使用PHP實現頁面動態效果2
1.3學習和使用PHP的難易程度4
1.3.1復制和粘貼本書的PHP代碼5
1.3.2PHP的安全性5
1.4編寫PHP代碼需要使用的軟件5
1.5本章小結7
第2章準備使用PHP9
2.1檢測網站是否支持PHP9
2.2安裝本地測試環境11
2.3在Windows上設置PHP開發測試環境11
2.3.1設置Windows以顯示文件擴展名12
2.3.2選擇Web服務器12
2.3.3在Windows上安裝一體化軟件安裝包12
2.4在macOS上設置PHP開發測試環境12
2.4.1安裝MAMP13
2.4.2測試和配置MAMP13
2.5PHP文件在Windows和Mac上的存放位置15
2.6查看PHP設置16
2.6.1使用phpinfo()命令顯示服務器配置16
2.6.2編輯php.ini文件18
2.7后續學習內容20
第3章編寫PHP腳本21
3.1PHP概況21
3.1.1告訴服務器處理PHP頁面22
3.1.2將PHP代碼嵌入網頁22
3.1.3將PHP代碼保存在外部文件中23
3.1.4使用變量表示變化的值23
3.1.5用分號結束語句26
3.1.6注釋腳本26
3.1.7使用數組存儲多個變量27
3.1.8PHP內置的超級全局數組29
3.1.9理解引號的使用29
3.1.10根據條件語句做出決策32
3.1.11比較運算符33
3.1.12使用縮進和空格提高代碼可讀性34
3.1.13對重復性任務使用循環35
3.1.14使用函數執行預設的任務35
3.1.15顯示PHP輸出36
3.1.16理解PHP錯誤消息38
3.2本章小結39
第4章PHP:快速參考41
4.1在已有的網站中使用PHP41
4.2PHP中的數據類型41
4.2.1檢查變量的數據類型43
4.2.2顯式更改變量的數據類型43
4.2.3檢查變量是否已定義44
4.3使用PHP進行計算44
4.3.1算術運算符44
4.3.2使用遞增和遞減運算符45
4.3.3運算符的優先級46
4.3.4組合計算和賦值運算符46
4.4字符串連接46
4.5你想知道的關于引號的一切47
4.5.1PHP處理字符串中的變量的方式47
4.5.2在雙引號內使用轉義序列48
4.5.3在字符串中嵌入關聯數組元素48
4.5.4使用heredoc語法避免轉義引號49
4.6創建數組50
4.6.1創建索引數組51
4.6.2創建關聯數組51
4.6.3創建空數組52
4.6.4多維數組52
4.6.5使用print_r()函數檢查數組53
4.7PHP中的邏輯運算54
4.7.1顯式布爾值54
4.7.2隱式布爾值54
4.7.3根據兩個值的比較結果做決策55
4.7.4復合條件56
4.7.5對決策鏈使用switch語句56
4.7.6使用三元運算符58
4.7.7使用空合并運算符設置默認值59
4.8使用循環重復執行代碼59
4.8.1while循環和do…while循環59
4.8.2用途多樣的for循環60
4.8.3使用foreach循環遍歷數組和對象61
4.8.4中斷循環62
4.9使用函數模塊化代碼63
4.9.1向函數傳遞值63
4.9.2為參數設置默認值64
4.9.3變量的作用域65
4.9.4從函數返回值66
4.9.5生成器——一種不斷產生輸出的特殊類型的函數66
4.9.6通過引用傳遞參數67
4.9.7接收可變數量參數的函數68
4.9.8自定義函數的位置69
4.10理解PHP類和對象69
4.11為類和函數指定數據類型(可選)70
4.12處理錯誤和異常72
4.13動態創建新變量73
4.14后續內容74
第5章使用包含文件75
5.1包含來自外部文件的代碼75
5.1.1PHP包含命令75
5.1.2PHP查找包含文件的位置76
5.1.3為包含文件選擇正確的文件擴展名81
5.1.4創建內容會發生變化的頁面91
5.1.5防止包含文件出錯100
5.1.6抑制已部署網站的錯誤消息101
5.1.7不能在PHP包含文件中使用網站根相對鏈接106
5.1.8選擇獲取包含文件的位置107
5.1.9包含文件的安全注意事項108
5.1.10修改include_path指令108
5.2本章回顧111
第6章在線表單113
6.1PHP從表單收集信息的方式113
6.1.1理解post和get的區別115
6.1.2使用PHP超級全局數組獲取表單數據118
6.2處理和驗證用戶輸入118
6.2.1創建可重用的腳本119
6.2.2在表單不完整時保留用戶輸入127
6.2.3過濾潛在攻擊129
6.3發送電子郵件131
6.4處理多項選擇表單元素141
6.5本章回顧150
第7章使用PHP管理文件151
7.1檢查PHP是否能打開文件151
7.1.1在Windows服務器根目錄外創建文件夾以便進行本地測試152
7.1.2影響文件訪問的配置設置153
7.2讀寫文件153
7.2.1在單個操作中讀取文件154
7.2.2打開和關閉用于讀/寫操作的文件158
7.3探索文件系統167
7.3.1使用scandir()函數檢查文件夾167
7.3.2使用FilesystemIterator類檢查文件夾的內容168
7.3.3使用RegexIterator限制文件類型171
7.4訪問遠程文件175
7.4.1使用新聞源和其他RSS源176
7.4.2使用SimpleXML177
7.5創建下載鏈接181
7.6本章回顧183
第8章使用數組185
8.1修改數組元素185
8.1.1PHP解決方案8-1:使用循環修改數組元素186
8.1.2PHP解決方案8-2:使用array_walk()函數修改數組元素188
8.1.3PHP解決方案8-3:使用array_map()函數修改數組元素190
8.2合并數組193
8.2.1使用數組并集操作符193
8.2.2使用array_merge()和array_merge_recursive()函數195
8.2.3將兩個索引數組合并為關聯數組197
8.2.4比較數組197
8.2.5PHP解決方案8-4:用逗號連接數組198
8.3數組排序201
8.3.1PHP解決方案8-5:使用宇宙飛船操作符進行自定義排序203
8.3.2使用array_multisort()函數進行復雜排序205
8.3.3PHP解決方案8-6:使用array_multisort()函數對多維數組排序206
8.3.4PHP解決方案8-7:查找數組的所有排列208
8.4處理數組數據210
8.4.1PHP解決方案8-8:自動構建嵌套列表210
8.4.2PHP解決方案8-9:從JSON中提取數據214
8.5自動將數組元素分配給變量217
8.5.1使用extract()函數218
8.5.2使用list()218
8.5.3使用list()的數組快捷語法219
8.5.4PHP解決方案8-10:使用生成器處理CSV文件219
8.6使用擴張操作符從數組中解包參數222
8.7本章回顧224
第9章上傳文件225
9.1PHP處理文件上傳的方式225
9.1.1檢查服務器是否支持上傳226
9.1.2向表單添加文件上傳字段227
9.1.3理解$_FILES數組228
9.1.4建立上傳目錄230
9.2上傳文件230
9.2.1將臨時文件轉移到上傳文件夾231
9.2.2PHP解決方案9-1:創建基本的文件上傳腳本231
9.3創建PHP文件上傳類234
9.3.1定義PHP類235
9.3.2檢查上傳文件的錯誤242
9.3.3修改受保護的屬性245
9.4一次上傳多個文件252
9.5使用Upload類258
9.6上傳文件時需要注意的檢查點258
9.7本章回顧259
第10章生成縮略圖261
10.1檢查服務器的能力261
10.2動態處理圖像262
10.3上傳時自動調整圖像大小281
10.3.1擴展類281
10.3.2使用Thumbnail-Upload類287
10.4本章回顧288
第11章記住用戶的輸入:簡單登錄表單和多頁表單289
11.1會話的定義和工作原理289
11.1.1創建PHP會話292
11.1.2創建和銷毀會話變量292
11.1.3銷毀會話292
11.1.4重新生成會話ID293
11.1.5Headersalreadysent錯誤293
11.2使用會話限制訪問294
11.2.1PHP解決方案11-1:一個簡單的會話示例294
11.2.2使用基于文件的身份驗證299
11.2.3保護密碼的安全299
11.3設置會話的時間限制321
11.4在多頁表單之間傳遞信息324
11.5本章回顧331
第12章數據庫入門333
12.1選擇數據庫:MySQL或MariaDB333
12.2數據庫存儲數據的原理334
12.2.1主鍵的工作原理335
12.2.2用主鍵和外鍵鏈接多個數據表336
12.2.3把信息分成小塊337
12.2.4設計良好數據庫的標準337
12.3使用圖形界面管理MySQL337
12.4創建名為phpsols的數據庫339
12.4.1MySQL的命名規則339
12.4.2使用phpMyAdmin創建新數據庫340
12.4.3創建特定于數據庫的用戶賬戶341
12.4.4創建數據庫表344
12.4.5在表中插入記錄346
12.4.6創建用于備份和數據遷移的SQL文件350
12.5在MySQL中選擇正確的數據類型354
12.5.1存儲文本354
12.5.2存儲數字355
12.5.3存儲日期和時間355
12.5.4存儲預定義列表356
12.5.5存儲二進制數據356
12.6本章回顧356
第13章使用PHP和SQL連接數據庫357
13.1檢查遠程服務器設置357
13.2PHP與數據庫通信的過程358
13.2.1使用MySQLi進行連接359
13.2.2使用PDO進行連接359
13.2.3PHP解決方案13-1:創建可重用的數據庫連接器360
13.2.4清理從數據庫獲取的文本內容363
13.2.5查詢數據庫并顯示結果364
13.3使用SQL與數據庫交互371
13.3.1編寫SQL查詢371
13.3.2優化由SELECT查詢檢索的數據373
13.4了解SQL注入的危險性376
13.5使用準備好的語句處理用戶輸入381
13.5.1在MySQLi中將變量嵌入準備好的語句中382
13.5.2在PDO中將變量嵌入準備好的語句中387
13.6本章回顧394
第14章創建動態圖片庫397
14.1不在數據庫中存儲圖像的原因398
14.2規劃畫廊398
14.3將圖片庫靜態頁面上的元素轉換為PHP400
14.4構建動態元素403
14.4.1通過查詢字符串傳遞信息403
14.4.2創建有多列的表407
14.4.3分頁顯示數量較多的記錄409
14.5本章回顧416
第15章數據庫內容管理417
15.1建立內容管理系統417
15.1.1創建blog數據庫表418
15.1.2創建基本的插入和更新表單419
15.1.3插入新記錄421
15.1.4鏈接到更新和刪除頁面425
15.1.5更新記錄429
15.1.6刪除記錄439
15.24個基本SQL命令的語法440
15.2.1SELECT命令441
15.2.2INSERT命令443
15.2.3UPDATE命令443
15.2.4DELETE命令444
15.3安全和錯誤消息444
15.4本章回顧445
第16章格式化文本和日期447
16.1顯示文本摘要447
16.1.1提取固定數量的字符447
16.1.2在一個完整的單詞上結束摘錄449
16.1.3提取第一段文件450
16.1.4顯示段落450
16.1.5提取完整的語句452
16.2構建日期456
16.2.1MySQL處理日期的方式456
16.2.2在MySQL中插入日期460
16.2.3在PHP中處理日期466
16.3本章回顧481
第17章從多個表中抽取數據483
17.1理解表的關系483
17.2將圖片關聯到文章485
17.2.1改變現有表的結構485
17.2.2在表中插入外鍵487
17.2.3從多張表中選擇記錄493
17.2.4查詢不包含匹配外鍵的記錄498
17.2.5創建智能鏈接500
17.3本章回顧501
第18章管理多個數據庫表503
18.1維護引用完整性503
18.1.1支持事務和外鍵約束504
18.1.2將記錄插入多個表中507
18.1.3創建交叉引用表508
18.1.4獲取上傳圖片的文件名509
18.1.5修改插入表單以處理多個表510
18.2更新和刪除多個表中的記錄523
18.2.1更新交叉引用表中的記錄523
18.2.2將多個查詢視為事務中的一個塊526
18.2.3在刪除記錄時保留引用完整性534
18.2.4創建具有外鍵約束的刪除腳本538
18.2.5創建沒有外鍵約束的刪除腳本539
18.3本章回顧540
第19章使用數據庫進行用戶身份驗證541
19.1選擇密碼存儲方法541
19.2使用散列密碼542
19.2.1創建表來存儲用戶的詳細信息542
19.2.2在數據庫中注冊新用戶542
19.3使用密鑰加密550
19.3.1創建用于存儲用戶詳細信息的表550
19.3.2注冊新用戶551
19.3.3使用雙向加密的用戶身份驗證553
19.3.4解密密碼554
19.4更新用戶的詳細信息555
19.5后續學習555
《PHP 7開發寶典(第4版)》詳細介紹了如何通過添加反饋表單、創建私人區域讓授權用戶上傳自動調整大小的圖像,或者將所有內容存儲到數據庫中,從而使網站更具動態性。作者David Powers更新了他的權威書籍,介紹了新發布的PHP 7,以及這個版本所帶來的新技術和變化。新的特性包括太空船運算符、空合并運算符、生成器、在list()函數中使用數組便捷語法、數組解引用,以及使用splat運算符進行數組解包。
  PHP和MySQL數據庫是創建動態網站更受歡迎的組合。它們是免費的且易于使用,并且許多網絡托管公司都提供標準的安裝包。本書還涵蓋了MariaDB。MariaDB是MySQL的無縫替代品,已經被許多Web服務器所采用。
  《PHP 7開發寶典(第4版)》通過一系列實例向你提供了真正有價值的技術方案,并可以直接融入你的網站,優化性能和增加功能,如文件上傳、電子郵件反饋表單、圖片庫和內容管理系統等。創建每個解決方案時,不僅實現了特定功能,還提供了界面設計。
  《PHP 7開發寶典(第4版)》不僅提供一系列現成的腳本,而且每個PHP解決方案都建立在以前的基礎之上,快速而輕松地教給你PHP和數據庫設計的基礎知識。學完本書,你將有信心開始編寫自己的腳本;如果你不愿意從頭開始編寫,也可以修改本書提供的代碼以滿足自己的需求。從本書一開始,作者就向你展示了如何通過采用安全編碼實踐來輕松地保護網站。
主要內容
● 設計與構建基于PHP的動態網站和應用程序
● 通過可以重用的實際示例開始學習
● 掌握PHP 7的新特性,包括處理數組的新方法
● 使用最新的PHP 7技術、創新和更佳實踐
PHP并不難,但也不像速溶蛋糕那樣:只需加水攪拌即可。每個網站都是不同的,因此不可能抓取一個腳本,粘貼到一個網頁上,然后就期望它能正常工作。筆者的目標是幫助對編程知之甚少或一無所知的網頁設計師獲得深入研究代碼并根據自己的需求調整代碼的信心。
你不需要任何PHP或其他編程語言的經驗就可以使用《PHP+7開發寶典(第4版)》;但編程技術確實在快速發展。在前幾章之后,你將開始使用相對高級的語言特性。別為理解這些語言特性花費太多時間,把它們視為一個挑戰。《PHP+7開發寶典(第4版)》被稱為PHP解決方案,其目的是為實際問題提供解決方案,而不是提供一系列毫無價值的練習。
你如何使用《PHP 7開發寶典(第4版)》將取決于你的經驗水平。如果你對PHP和編程還不熟悉,請從頭開始,并逐步閱讀《PHP+7開發寶典(第4版)》。《PHP+7開發寶典(第4版)》按照一個邏輯順序進行組織,每一章都建立在前面章節的知識和技能的基礎上。在描述代碼時,筆者試圖用簡單的語言解釋它的功能。筆者避免使用行話,但使用了一些技術術語(每個新術語在第一次出現時都會進行簡要描述)。如果你對PHP有更多的經驗,可以直接跳轉到感興趣的領域。雖然在沒有筆者的解釋的情況下你也能理解代碼的意義,但筆者希望呈現自己在使用PHP解決問題時理清思路的過程。
細小而重大的變化
這個版本的標題有一點細微的差別。我們在標題里面特意指明是PHP 7。以前的版本簡單地稱為PHP解決方案;但是《PHP+7開發寶典(第4版)》的編輯和筆者決定明確地表明,這個版本只關注PHP 7,這是目前唯一受支持的PHP版本。除了大大提高了速度之外,PHP 7的一大優點是,它幾乎完全向后兼容PHP 5;換句話說,實際上所有在PHP 5上運行的代碼都可以無縫地切換到PHP 7的環境中。然而,反過來卻不行。《PHP+7開發寶典(第4版)》使用了許多PHP 7的新特性。因此,如果嘗試在仍然運行PHP 5的舊服務器上運行PHP 7解決方案中的代碼,你很快就會遇到問題。
由于托管公司通常升級他們提供的PHP版本的速度很慢,因此《PHP+7開發寶典(第4版)》的前幾個版本為較舊版本的PHP提供了解決方法。這一次,《PHP+7開發寶典(第4版)》沒有這樣做。對一些讀者來說,這意味著在本地測試環境中完美工作的代碼在上傳到遠程服務器上后可能會崩潰。截至2019年中期,每3臺運行PHP的Web服務器中就有兩臺以上仍在使用PHP 5,盡管所有對PHP 5的官方支持都已在2018年12月結束。甚至連PHP 7(7.0)的原始版本都不再受支持。《PHP+7開發寶典(第4版)》中的代碼是在PHP 7.3上開發的,盡管在第10章中有一個小的例外(《PHP+7開發寶典(第4版)》提供了解決方法),所有代碼都將在PHP 7.2或更高版本上運行。
PHP不像你開了多年的舊車,只要給它足夠的愛和油,就不需要更換。PHP不斷更新,不僅要添加新功能,還要修復bug和安全問題。即使你對新特性不感興趣,也應該對安全修復感興趣。互聯網可能是一個瘋狂的地方,許多討厭的角色試圖在網站上找到可利用的漏洞。《PHP+7開發寶典(第4版)》包含了很多關于安全性的建議,但是它不能保護你免受PHP核心中發現的安全問題的影響。確保你的遠程服務器保持最新狀態是將風險降至最低所需的保障。因為PHP是免費的(盡管托管公司對他們的服務收費),所以不會額外增加費用。
這個版本的其他新特點
這個版本仍然沿用以前版本的結構,繼續使用相同的Japan Journey網站案例作為主線,因此乍一看,似乎沒有什么變化。不過,每一頁都做了修訂,目的是使描述更清楚。更重要的是,對代碼進行了廣泛的審查和更新。第9章和第10章中的Upload和ThumbnailUpload類已經被徹底重寫,使它們更簡單、更健壯。關于使用數組有一個全新的章節;關于編寫PHP腳本的章節被分成兩部分。第3章現在是對新用戶的PHP快速介紹,而第4章則是對初學者和更有經驗的讀者的PHP快速參考。第4章已經擴展了內容以介紹PHP 7中的新特性。
有關使用MySQL或MariaDB數據庫的章節已經過修訂,以使代碼更加安全。《PHP+7開發寶典(第4版)》還添加了一個PHP解決方案,特別說明了使用超級全局變量$_SERVER[PHP_SELF]可能出現的問題,并提供了一個健壯的解決方案。
使用示例文件
可掃描封底二維碼獲取《PHP+7開發寶典(第4版)》示例文件。
設置一個PHP開發環境,如第2章所述。解壓縮文件并將phpsols-4e文件夾及其所有內容復制到Web服務器的文檔根目錄中。每章的代碼都位于以該章的編號命名的文件夾(如ch01、ch02等)中。按照每個PHP解決方案中的說明進行操作,并將相關文件復制到網站根目錄或指定的工作文件夾中。
如果在一章中對一個頁面進行多次修改,《PHP+7開發寶典(第4版)》會對文件的不同版本進行編號,比如index_01.php、index_02.php等。復制帶有數字的文件時,請從文件名

中刪除下畫線和數字,這樣index_01.php就變成了index.php。如果你使用的程序在將文件從一個文件夾移動到另一個文件夾時提示你更新鏈接,請不要更新它們。文件中的鏈接設計用于在目標文件夾中獲取正確的圖像和樣式表。《PHP+7開發寶典(第4版)》已經這樣做了,因此你可以使用文件比較工具檢查你的文件與筆者的文件。
如果你沒有文件比較工具,筆者強烈建議你安裝一個。當你試圖找出你的版本和筆者的版本之間的差異時,這將節省大量時間。在幾十行代碼中,很難找到缺少分號或類型錯誤的變量。Windows用戶可免費下載WinMerge。筆者使用Beyond Compare,它現在提供Windows、macOS和Linux版本。這個工具不是免費的,但功能很強大,而且價格合理。Mac上的BBEdit包含一個文件比較工具。如果你愿意在Mac上使用終端程序,那么默認情況下會安裝diff實用程序。
pagetop