第 1章 安 裝\t10
1.1屬於自己的Web服務器10
1.1.1服務器安裝方法1:手動安裝所有的軟件11
1.1.2服務器安裝方法2:預打包安裝12
1.1.3服務器安裝方法3:虛擬服務器12
1.2你自己的虛擬機14
1.2.1在Windows上安裝14
1.2.2在macOS上安裝14
1.2.3在Linux上安裝14
1.3啟動Vagrant15
第2章 PHP簡介19
2.1基本的語法和語句21
2.2變量、操作符和注釋24
2.2.1變量24
2.2.2操作符24
2.2.3注釋25
2.3控制結構26
2.3.1if語句26
2.3.2循環31
2.4數組39
2.5用戶交互和表單46
在鏈接中傳遞變量47
2.6在表單中傳遞變量54
Get還是Post57
2.7彌補縫隙57
2.7.1使用PHP模板58
2.7.2安全性問題60
2.7.3多個模板,一個控制器63
2.8接觸數據庫66
第3章MySQL簡介67
3.1數據庫簡介67
3.2使用MySQL Workbench運行SQL查詢68
3.3創建數據庫72
3.4SQL語言73
3.5創建表76
3.6將數據插入表中80
3.7一點警告84
3.8查看存儲的數據85
3.9修改存儲的數據89
3.10刪除存儲的數據90
3.11讓PHP進行輸入91
第4章在Web上發布MySQL數據92
4.1藍圖92
4.2創建MySQL用戶賬戶93
4.3使用PHP連接MySQL96
4.4面向對像編程一瞥101
配置連接103
4.5用PHP發送SQL查詢107
4.6處理SELECT結果集111
4.7提前考慮120
4.8將數據插入數據庫131
4.9從數據庫刪除數據142
4.10完成任務149
第5章關繫數據庫設計150
5.1該署名的時候署名150
5.2首要原則:保持實體分離152
5.3查詢多個表157
5.4簡單關繫163
5.5多對多關繫165
5.6一對多和多對一169
第6章PHP結構化編程170
6.1包含文件170
6.1.1包含HTML內容170
6.1.2包含PHP代碼172
6.1.3包含的類型176
6.2定制函數和函數庫177
變量作用域180
6.3將代碼分解為可復用的函數186
6.3.1使用函數來替代查詢194
6.3.2更新笑話196
6.3.3在Web站點上編輯笑話197
6.3.4刪除函數200
6.3.5選擇函數202
6.4最佳方法203
第7章改進插入和更新函數205
7.1改進更新笑話的函數205
7.1.1去除末尾的逗號209
7.1.2改進插入笑話的函數211
7.2處理日期215
顯示笑話日期221
7.3自己制作工具224
7.4通用型函數225
7.5使用這些函數231
7.6重復的代碼是敵人235
創建一個用於添加和編輯的頁面236
7.7進一步打磨241
7.8繼續前進245
第8章對像和類246
8.1類247
8.2公有和私有251
8.3對像251
8.4類變量252
8.5構造方法259
8.6類型提示262
8.7私有變量264
8.8使用DatabaseTable類267
8.9更新控制器以使用類271
8.10DRY275
8.11創建一個控制器類276
8.12單點入口281
8.13保持DRY原則288
8.14模板變量294
8.15小心extract296
第9章創建一個可擴展的框架299
9.1搜索引擎300
9.2讓內容更加通用302
9.3提前考慮:用戶注冊304
9.4依賴性309
9.5URL重寫316
9.6整理320
遵從OOP320
9.7在不同站點上復用代碼328
9.8通用的還是特定於項目的?328
讓EntryPoint更通用330
9.9自動加載和命名空間337
9.10區分大小寫339
9.11實現自動加載程序340
9.12重定向342
9.13命名空間344
9.14用PSR-4自動加載347
9.15Composer簡介350
9.16REST簡介350
9.17使用接口增強依賴性結構360
9.18你自己的框架362
第10章 允許用戶注冊賬戶364
10.1驗證E-mail地址374
10.2防止同一個人注冊兩次375
10.3安全地存儲密碼380
10.4注冊完成383
第11章 cookie、session和訪問控制387
11.1cookie388
11.2PHP會話393
統計使用會話的訪問396
11.3訪問控制396
11.3.1登錄397
11.3.2受保護的頁面405
11.3.3接口和返回類型410
11.3.4使用驗證類413
11.3.5登錄錯誤消息414
11.4創建一個登錄表單416
11.5退出421
11.5.1給登錄用戶增加添加笑話的功能423
11.5.2用戶許可426
11.5.3任務完成了?428
11.6天高任鳥飛432
第12章 MySQL管理433
12.1備份MySQL數據庫434
12.1.1使用MySQL Workbench進行數據庫備份434
12.1.2使用mysqldump進行數據庫備份436
12.1.3使用二進制日志的增量備份438
12.2MySQL訪問控制技巧441
12.2.1主機名問題442
12.2.2鎖在外面了444
12.3索引445
多列索引449
12.4外鍵452
12.5安全比說抱歉好454
第13章 關 繫455
13.1對像關繫映射器459
13.1.1公有屬性460
13.1.2實體類中的方法461
13.1.3使用來自DatabaseTable類的實體類464
13.1.4笑話對像472
13.1.5使用Joke類476
13.1.6引用476
13.1.7簡化列表控制器動作477
13.2整理480
緩存481
13.3笑話分類483
列表頁面488
13.4指定笑話的分類491
給笑話指定分類504
13.5按照分類顯示笑話507
13.6編輯笑話513
13.7用戶角色517
13.8創建一個表單以分配許可524
13.8.1作者列表525
13.8.2編輯作者權限526
13.8.3設置許可529
13.8.4一種不同的方法530
13.8.5快速了解二進制532
13.8.6位計算能力533
13.8.7回到PHP534
13.8.8在數據庫中存儲按位許可536
13.8.9連接表或按位計算537
13.8.10整理538
13.8.11編輯其他人的笑話539
13.9大功告成543
第14章 用正則表達式進行內容格式544
14.1正則表達式545
14.2用正則表達式進行字符串替換547
14.2.1強調文本548
14.2.2段落554
14.2.3超鏈接556
14.3綜合應用558
14.4排序、限定和偏移564
14.4.1排序564
14.4.2用LIMIT和OFFSET分頁569
14.4.3分類中的分頁577
14.5達到專業水準581
下一步如何學習582
附錄A使用示例代碼584
A.1一些警告584
附錄BLinux故障排除585