PHP 7 開發寶典, 4/e (PHP 7 Solutions: Dynamic Web Design Made Easy, 4/e)

David Powers 張琦 張楚雄 譯

  • PHP 7 開發寶典, 4/e (PHP 7 Solutions: Dynamic Web Design Made Easy, 4/e)-preview-1
  • PHP 7 開發寶典, 4/e (PHP 7 Solutions: Dynamic Web Design Made Easy, 4/e)-preview-2
  • PHP 7 開發寶典, 4/e (PHP 7 Solutions: Dynamic Web Design Made Easy, 4/e)-preview-3
PHP 7 開發寶典, 4/e (PHP 7 Solutions: Dynamic Web Design Made Easy, 4/e)-preview-1

買這商品的人也買了...

商品描述

《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技術、創新和更佳實踐

作者簡介

David Powers

已經累計發布了三十多個關於PHP的視頻培訓課程和書籍。
這些課程和書籍都非常成功。
他以前是BBC電台和電視台的記者,在任職記者期間,花費了很大一部分時間在日本報導泡沫經濟的興衰。
他擅長用簡單且通俗易懂的語言分析複雜的問題。
這種能力也體現在他的關於PHP和Web開發的文章中。

David最初是在20世紀90年代初作為BBC日本電視台的編輯參與網絡開發。
由於沒有營銷預算,他開發了一個雙語網站來推廣這個渠道。
離開BBC以後,他繼續為一家國際諮詢公司開發雙語在線數據庫,並在英國兩所大學講授網絡開發課程。
除了寫作和製作視頻培訓課程外,他還是北倫敦一家慈善機構的受託人。
該慈善機構為退休人員和不再全職工作的人員提供教育設施。

目錄大綱

目    錄
第1章  PHP介紹和PHP使用對象   1
1.1  PHP的演進   2
1.2  使用PHP實現頁面動態效果   2
1.3  學習和使用PHP的難易程度   4
1.3.1  復制和粘貼本書的PHP代碼   5
1.3.2  PHP的安全性   5
1.4  編寫PHP代碼需要使用的軟件   5
1.5  本章小結   7

第2章  準備使用PHP   9
2.1  檢測網站是否支持PHP   9
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  安裝MAMP   13
2.4.2  測試和配置MAMP   13
2.5  PHP文件在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.1  PHP概況   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.8  PHP內置的超級全局數組   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  在已有的網站中使用PHP   41
4.2  PHP中的數據類型   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.1  PHP處理字符串中的變量的方式   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.7  PHP中的邏輯運算   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.1  while循環和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.1  PHP包含命令   75
5.1.2  PHP查找包含文件的位置   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.1  PHP從表單收集信息的方式   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  使用SimpleXML   177
7.5  創建下載鏈接   181
7.6  本章回顧   183

第8章  使用數組   185
8.1  修改數組元素   185
8.1.1  PHP解決方案8-1:使用循環修改數組元素   186
8.1.2  PHP解決方案8-2:使用array_walk()函數修改數組元素   188
8.1.3  PHP解決方案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.5  PHP解決方案8-4:用逗號連接數組   198
8.3  數組排序   201
8.3.1  PHP解決方案8-5:使用宇宙飛船操作符進行自定義排序   203
8.3.2  使用array_multisort()函數進行復雜排序   205
8.3.3  PHP解決方案8-6:使用array_multisort()函數對多維數組排序   206
8.3.4  PHP解決方案8-7:查找數組的所有排列   208
8.4  處理數組數據   210
8.4.1  PHP解決方案8-8:自動構建嵌套列表   210
8.4.2  PHP解決方案8-9:從JSON中提取數據   214
8.5  自動將數組元素分配給變量   217
8.5.1  使用extract()函數   218
8.5.2  使用list()   218
8.5.3  使用list()的數組快捷語法   219
8.5.4  PHP解決方案8-10:使用生成器處理CSV文件   219
8.6  使用擴張操作符從數組中解包參數   222
8.7  本章回顧   224

第9章  上傳文件   225
9.1  PHP處理文件上傳的方式   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.2  PHP解決方案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  重新生成會話ID   293
11.1.5  Headers already sent錯誤   293
11.2  使用會話限制訪問   294
11.2.1  PHP解決方案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或MariaDB   333
12.2  數據庫存儲數據的原理   334
12.2.1  主鍵的工作原理   335
12.2.2  用主鍵和外鍵鏈接多個數據表   336
12.2.3  把信息分成小塊   337
12.2.4  設計良好數據庫的標準   337
12.3  使用圖形界面管理MySQL   337
12.4  創建名為phpsols的數據庫   339
12.4.1  MySQL的命名規則   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.2  PHP與數據庫通信的過程   358
13.2.1  使用MySQLi進行連接   359
13.2.2  使用PDO進行連接   359
13.2.3  PHP解決方案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  將圖片庫靜態頁面上的元素轉換為PHP   400
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.2  4個基本SQL命令的語法   440
15.2.1  SELECT命令   441
15.2.2  INSERT命令   443
15.2.3  UPDATE命令   443
15.2.4  DELETE命令   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.1  MySQL處理日期的方式   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