內容簡介
本書以零基礎講解為宗旨,用實例引導讀者深入學習,采取“基礎入門→核心技術→高級技能→項目實戰”的講解模式,深入淺出地講解PHP 7的各項技術及實戰技能。
本書第1篇“基礎入門”主要內容包括我的第一個PHP程序、PHP的基本語法、函數的應用、程序控制結構、字符串、正則表達式;第2篇“核心技術”主要內容包括數組、PHP與Web頁面交互、管理日期和時間、Cookie和會話管理、GD繪圖與圖像處理、錯誤處理和異常處理、操作文件與目錄、面向對象編程和PHP加密技術;第3篇“高級技能”主要內容包括phpMyAdmin操作MySQL數據庫、MySQL數據庫與SQL查詢、使用MySQLi操作MySQL、使用PDO操作MySQL數據庫、PHP與XML技術、PHP與Ajax技術、PHP與jQuery技術、Zend Framework框架;第4篇“項目實戰”主要內容包括開發驗證碼系統、開發個人博客系統、開發用戶權限系統、開發社區市場系統。
本書適合任何想學習使用PHP 7開發動態網站的人員,無論您是否從事計算機相關行業,無論您是否接觸過PHP 7,通過學習均可快速掌握PHP 7開發動態網站的方法和技巧。
前 言
“網站開發案例課堂”系列圖書是專門為網頁設計和動態網站開發初學者量身定制的一套學習用書。整套書涵蓋網頁設計、網站開發、數據庫設計等方面。整套書具有以下特點。
前沿科技
無論是網站建設、數據庫設計還是HTML 5、CSS 3、JavaScript、PHP,我們都精選較為前沿或者用戶群最大的領域推進,幫助大家認識和了解最新動態。
權威的作者團隊
組織國家重點實驗室和資深應用專家聯手編著該套圖書,融合豐富的教學經驗與優秀的管理理念。
學習型案例設計
以技術的實際應用過程為主線,全程采用圖解和同步多媒體結合的教學方式,生動、直觀、全面地剖析使用過程中的各種應用技能,降低難度,提升學習效率。
為什么要寫這樣一本書
PHP是世界上最為流行的Web開發語言之一。目前學習和關注PHP的人越來越多,而很多PHP的初學者都苦于找不到一本通俗易懂、容易入門和案例實用的參考書。為此,作者組織有豐富經驗的開發人員編寫了這本書。通過本書的實訓,讀者可以快速地學會開發動態網站,提高職業化能力,從而幫助解決公司與求職者的雙重需求問題。
本書特色
零基礎、入門級的講解
無論您是否從事計算機相關行業,無論您是否接觸過PHP 7動態網站開發,都能從本書中找到最佳起點。
超多、實用、專業的范例和項目
本書在編排上緊密結合深入學習PHP開發動態網站的先后過程,從PHP 7的基本概念開始,帶領大家逐步深入地學習各種應用技巧,側重實戰技能,使用簡單易懂的實際案例進行分析和操作指導,讓讀者讀起來簡明輕松,操作起來有章可循。
隨時檢測自己的學習成果
內容講解章節最后的“疑難解惑”板塊,均根據本章內容精選而成,從而幫助讀者解決自學過程中最常見的疑難問題。
細致入微、貼心提示
本書在講解過程中,在各章中使用了“注意”“提示”“技巧”等小貼士,使讀者在學習過程中更清楚地了解相關操作、理解相關概念,并輕松掌握各種操作技巧。
專業創作團隊和技術支持
您在學習過程中遇到任何問題,均可加入QQ群(案例課堂VIP)451102631進行提問,專家人員會在線答疑。
超值資源大放送
全程同步教學錄像
涵蓋本書所有知識點,詳細講解每個實例及項目的過程及技術關鍵點。可以使讀者比看書更輕松地掌握書中所有的動態網站開發知識,而且擴展的講解部分使您得到比書中更多的收獲。
超多容量王牌資源
贈送大量王牌資源,包括本書實例源代碼、教學幻燈片、本書精品教學視頻、16個經典項目開發完整源代碼、常用SQL語句速查手冊、MySQLi函數速查手冊、PHP 7廢棄特性速查手冊、PHP 7的新功能速查手冊、PHP常用函數速查手冊、PHP網站開發工程師面試技巧、PHP網站開發工程師常見面試題、優秀網站開發工程師之路——網站開發經驗及技巧大匯總等。讀者可以通過QQ群(案例課堂VIP)451102631獲取贈送資源,也可以掃描二維碼,下載本書資源。
讀者對象
沒有任何網頁設計基礎的初學者。
有一定的PHP 7基礎,想精通PHP 7動態網站開發的人員。
有一定的PHP 7網頁設計基礎,沒有項目經驗的人員。
正在進行畢業設計的學生。
大專院校及培訓學校的老師和學生。
創作團隊
本書由劉春茂編著,參加編寫的人員還有劉玉萍、張金偉、蒲娟、周佳、付紅、李園、郭廣新、侯永崗、王攀登、劉海松、孫若淞、王月嬌、包慧利、陳偉光、胡同夫、王偉、展娜娜、李琪、梁云梁和周浩浩。在編寫過程中,我們竭盡所能地將最好的講解呈現給讀者,但也難免有疏漏和不妥之處,敬請不吝指正。若您在學習中遇到困難或疑問,或有任何建議,可寫信至郵箱357975357@qq.com。
編 者
目 錄
第1篇 基 礎 入 門第1章 揭開PHP的神秘面紗——我的第一個PHP程序 31.1 認識PHP 41.1.1 什么是PHP 41.1.2 PHP的發展歷程 41.1.3 PHP語言的優勢 51.2 PHP 7的新特征 51.3 PHP服務器概述 71.4 新手的福音——安裝WampServer集成開發環境 81.5 常用的開發利器 111.5.1 PHP代碼開發工具 111.5.2 網頁設計工具 121.5.3 文本編輯工具 121.6 案例實戰——我的第一個PHP程序 131.7 如何能學好PHP 7 141.8 疑難解惑 15第2章 零基礎開始學習——PHP的基本語法 172.1 PHP語言標識風格 182.2 熟悉編碼規范 182.2.1 什么是編碼規范 192.2.2 PHP的一些編碼規范 192.3 常量 212.3.1 聲明和使用常量 212.3.2 使用系統預定義常量 212.4 變量 232.4.1 PHP中的變量聲明 232.4.2 可變變量和變量的引用 242.4.3 變量作用域 252.4.4 變量的銷毀 272.5 理解變量的類型 282.5.1 什么是類型 282.5.2 整型(integer) 292.5.3 浮點型(float或double) 292.5.4 布爾型(boolean) 292.5.5 字符串型(string) 292.5.6 數組型(array) 302.5.7 對象型(object) 322.5.8 NULL型 322.5.9 資源類型(Resource) 322.5.10 數據類型之間的相互轉換 322.6 PHP 7的新變化——聲明標量類型和函數返回值類型 332.7 使用運算符 352.7.1 算術運算符 352.7.2 字符串連接符 362.7.3 賦值運算符 362.7.4 比較運算符 372.7.5 邏輯運算符 382.7.6 按位運算符 382.7.7 否定控制運算符 392.7.8 錯誤控制運算符 392.7.9 三元運算符 392.7.10 運算符的優先級和結合規則 392.8 PHP 7的新變化——合并運算符和組合運算符 402.9 PHP中的表達式 402.10 案例實戰——創建多維數組 412.11 疑難解惑 42第3章 實現定制功能——函數的應用 433.1 認識函數 443.2 內置函數 443.2.1 數學函數 443.2.2 變量相關的函數 453.3 自定義函數 463.3.1 定義和調用函數 463.3.2 向函數傳遞參數值 473.3.3 向函數傳遞參數引用 483.3.4 從函數中返回值 483.3.5 引用函數 493.3.6 取消函數引用 503.3.7 變量函數 503.4 PHP 7的新變化——新增intdiv()函數 513.5 包含文件 513.5.1 require和include 523.5.2 include_once和require_once 523.6 疑難解惑 53第4章 程序的執行方向——程序控制結構 554.1 流程控制概述 564.2 條件控制結構 564.2.1 單一條件分支結構(if語句) 564.2.2 雙向條件分支結構(if…else語句) 574.2.3 多向條件分支結構(elseif語句) 574.2.4 多向條件分支結構(switch語句) 584.3 循環控制結構 604.3.1 while循環語句 604.3.2 do...while循環語句 604.3.3 for循環語句 614.3.4 foreach循環語句 624.3.5 流程控制的另一種書寫格式 624.3.6 使用break/continue語句跳出循環 644.4 案例實戰1——條件分支結構的應用 654.5 案例實戰2——循環控制結構的應用 664.6 疑難解惑 67第5章 不可不說的文本數據——字符串 695.1 字符串的單引號和雙引號 705.2 字符串的連接符 715.3 字符串的基本操作 725.3.1 手動和自動轉義字符串中的字符 725.3.2 計算字符串的長度 725.3.3 字符串單詞統計 735.3.4 清理字符串中的空格 745.3.5 字符串的切分與組合 745.3.6 字符串子串的截取 755.3.7 字符串子串的替換 765.3.8 字符串查找 775.4 疑難解惑 77第6章 匹配文本有妙招——正則表達式 796.1 什么是正則表達式 806.2 正則表達式的語法規則 806.2.1 方括號([ ]) 806.2.2 連字符(-) 806.2.3 點號字符(.) 806.2.4 限定符(+*?{n,m}) 816.2.5 行定位符(^和$) 816.2.6 排除字符([^]) 816.2.7 括號字符(()) 816.2.8 選擇字符(|) 816.2.9 轉義字符與反斜杠 816.2.10 認證E-mail的正則表達式 826.3 Perl 兼容正則表達式函數 826.3.1 使用正則表達式對字符串進行匹配 826.3.2 使用正則表達式替換字符串的子串 846.3.3 使用正則表達式切分字符串 856.4 案例實戰——創建商品在線訂單頁面 856.5 疑難解惑 89第2篇 核 心 技 術第7章 特殊的元素集合——數組 937.1 什么是數組 947.2 數組類型 947.2.1 數字索引數組 947.2.2 關聯索引數組 957.3 數組的結構 957.3.1 一維數組 967.3.2 多維數組 967.4 遍歷數組 987.4.1 遍歷一維數字索引數組 987.4.2 遍歷一維關聯索引數組 987.4.3 遍歷多維數組 997.5 數組排序 1007.5.1 一維數組排序 1007.5.2 多維數組排序 1027.6 字符串與數組的轉換 1037.7 向數組中添加和刪除元素 1047.7.1 向數組中添加元素 1047.7.2 從數組中刪除元素 1057.8 查詢數組中的指定元素 1067.9 統計數組元素的個數 1087.10 刪除數組中重復的元素 1097.11 調換數組中的鍵值和元素值 1107.12 數組的序列化 1117.13 疑難解惑 112第8章 表單的動態效果——PHP與Web頁面交互 1138.1 創建動態內容 1148.2 表單與PHP 1148.3 設計表單元素 1158.3.1 表單的基本結構 1158.3.2 文本框 1158.3.3 復選框 1168.3.4 單選按鈕 1188.3.5 下拉列表 1198.3.6 重置按鈕和提交按鈕 1208.4 傳遞數據 1238.4.1 用POST方式傳遞數據 1238.4.2 用GET方式傳遞數據 1238.5 PHP獲取表單傳遞數據的方法 1248.6 PHP對URL傳遞的參數進行編碼 1258.7 案例實戰——團購商品訂單表 1268.8 疑難解惑 127第9章 時間很重要——管理日期和時間 1299.1 系統時區的設置 1309.1.1 時區劃分 1309.1.2 時區設置 1309.2 PHP的日期和時間函數 1309.2.1 關于Unix時間戳 1309.2.2 獲取當前的時間戳 1319.2.3 獲取當前的日期和時間 1319.2.4 使用時間戳獲取日期信息 1329.2.5 檢驗日期的有效性 1359.2.6 輸出格式化時間戳的日期和時間 1359.2.7 顯示本地化的日期和時間 1379.2.8 將日期和時間解析為Unix時間戳 1389.2.9 日期時間在PHP和MySQL數據格式之間轉換 1389.3 案例實戰1——實現倒計時功能 1399.4 案例實戰2——比較兩個時間的大小 1399.5 疑難解惑 140第10章 保持HTTP連接狀態——Cookie和會話管理 14110.1 Cookie的基本操作 14210.1.1 什么是Cookie 14210.1.2 創建Cookie 14210.1.3 讀取Cookie 14310.1.4 刪除Cookie 14410.2 認識Session 14510.2.1 什么是Session 14510.2.2 Session的基本功能 14610.2.3 Cookie與Session 14610.2.4 儲存Session ID在Cookie或URL中 14610.3 會話管理 14610.3.1 創建會話 14610.3.2 注冊會話變量 14710.3.3 使用會話變量 14810.3.4 注銷和銷毀會話變量 14810.4 案例實戰——綜合應用會話管理 14910.5 疑難解惑 150第11章 設計圖形圖像——GD繪圖與圖像處理 15111.1 在PHP中加載GD庫 15211.2 圖形圖像的典型應用案例 15411.2.1 創建一個簡單的圖像 15511.2.2 使用GD2的函數在圖片上添加文字 15611.2.3 使用TrueType字體處理中文生成圖片 15711.3 Jpgraph庫的基本操作 15911.3.1 Jpgraph的安裝 16011.3.2 Jpgraph的配置 16011.4 案例實戰1——制作圓形統計圖 16111.5 案例實戰2——制作3D餅形統計圖 16311.6 疑難解惑 164第12章 不可避免的問題——錯誤處理和異常處理 16712.1 常見的錯誤和異常 16812.2 錯誤處理 17112.2.1 php.ini中的錯誤處理機制 17112.2.2 應用DIE語句來調試 17212.2.3 自定義錯誤和錯誤觸發器 17212.2.4 錯誤記錄 17512.3 PHP 7新變化——改變了錯誤的報告方式 17612.4 異常處理 17712.4.1 異常的基本處理方法 17712.4.2 自定義的異常處理器 17912.4.3 處理多個異常 18012.4.4 設置頂層異常處理器 18112.5 案例實戰——處理異常或錯誤 18212.6 疑難解惑 183第13章 與外界的交流——操作文件與目錄 18513.1 查看文件和目錄 18613.1.1 查看文件名稱 18613.1.2 查看目錄名稱 18613.1.3 查看文件真實目錄 18713.2 查看文件信息 18713.2.1 查看文件的類型 18713.2.2 查看文件的訪問和修改時間 18813.3 文件操作 18813.3.1 打開文件和關閉文件 18913.3.2 讀取文件 19013.3.3 文件數據寫入 19113.3.4 重命名和移動文件 19313.3.5 復制文件 19313.3.6 刪除文件 19413.4 目錄操作 19413.5 上傳文件 19813.5.1 全局變量$_FILES 19813.5.2 文件上傳 19913.6 案例實戰——編寫訪客計數器 20113.7 疑難解惑 202第14章 主流的編程思想——面向對象編程 20314.1 類和對象的介紹 20414.2 類的基本操作 20514.2.1 類的聲明 20514.2.2 成員屬性 20514.2.3 成員方法 20614.2.4 類的實例化 20614.2.5 訪問類中的成員屬性和方法 20714.3 構造方法和析構方法 20814.4 訪問器 21014.5 類的繼承 21114.6 抽象類和接口 21214.6.1 抽象類 21214.6.2 接口 21314.7 面向對象的多態性 21514.7.1 通過繼承實現多態 21514.7.2 通過接口實現多態 21614.8 PHP 7的新變化——支持匿名類 21714.9 疑難解惑 218第15章 提升網站安全的武器——PHP加密技術 21915.1 使用PHP加密函數 22015.1.1 實例1——使用md5()函數進行加密 22015.1.2 實例2——使用crypt()函數進行加密 22015.1.3 實例3——使用sha1()函數進行加密 22215.2 使用PHP加密擴展庫 22215.2.1 實例4——安裝和使用Mcrypt擴展庫 22215.2.2 實例5——使用Mhash擴展庫 22415.3 疑難解惑 226第3篇 高 級 技 能第16章 管理MySQL的利器——phpMyAdmin操作MySQL數據庫 22916.1 什么是MySQL 23016.1.1 客戶-服務器軟件 23016.1.2 數據庫的原理 23016.1.3 MySQL版本 23116.1.4 MySQL的優勢 23216.2 創建MySQL數據庫和數據表 23216.2.1 啟動phpMyAdmin管理程序 23216.2.2 創建數據庫 23316.2.3 認識數據表的字段 23416.2.4 創建數據表 23616.2.5 添加數據 23816.3 加密MySQL數據庫 23916.3.1 MySQL數據庫的安全問題 23916.3.2 為MySQL管理賬號加上密碼 24016.4 數據庫的備份與還原 24116.4.1 數據庫的備份 24116.4.2 數據庫的還原 24216.5 疑難解惑 243第17章 數據庫編程——MySQL數據庫與SQL查詢 24517.1 安裝與配置MySQL 5.7 24617.1.1 安裝MySQL 5.7 24617.1.2 配置MySQL 5.7 24817.2 啟動服務并登錄MySQL數據庫 25117.2.1 啟動MySQL服務 25117.2.2 登錄MySQL數據庫 25217.3 MySQL數據庫的基本操作 25417.3.1 創建數據庫 25417.3.2 查看數據庫 25417.3.3 刪除數據庫 25517.3.4 選擇數據庫 25517.4 MySQL數據表的基本操作 25617.4.1 創建數據表 25617.4.2 查看數據表的結構 25717.4.3 修改數據表結構 25817.4.4 刪除數據表 25917.5 MySQL語句的操作 25917.5.1 插入記錄 25917.5.2 查詢記錄 26017.5.3 修改記錄 26117.5.4 刪除記錄 26117.6 MySQL數據庫的備份與還原 26117.6.1 數據備份 26117.6.2 數據還原 26817.7 疑難解惑 270第18章 最經典的方法——使用MySQLi操作MySQL 27118.1 PHP訪問MySQL數據庫的一般步驟 27218.2 連接數據庫前的準備工作 27218.3 PHP操作MySQL數據庫 27318.3.1 連接MySQL服務器 27318.3.2 選擇數據庫 27418.3.3 創建數據庫 27518.3.4 創建數據表 27618.3.5 添加數據 27818.3.6 一次插入多條數據 27918.3.7 讀取數據 28118.3.8 釋放資源 28218.3.9 關閉連接 28218.4 案例實戰1——動態添加員工信息 28318.5 案例實戰2——動態查詢數據信息 28418.6 提升安全性——防止SQL注入的攻擊 28618.7 疑難解惑 287第19章 最兼容的方法——使用PDO操作MySQL數據庫 28919.1 認識PDO 29019.2 PDO的安裝 29019.3 使用PDO操作MySQL 29119.3.1 連接MySQL數據庫 29219.3.2 創建數據庫 29319.3.3 創建數據表 29419.3.4 添加數據 29519.3.5 一次插入多條數據 29619.3.6 讀取數據 29619.4 提升安全性——防止SQL注入的攻擊 29819.5 疑難解惑 299第20章 跨平臺的數據通信——PHP與XML技術 30120.1 理解XML概念 30220.2 XML語法基礎 30320.2.1 XML文檔組成和聲明 30320.2.2 XML元素介紹 30420.2.3 處理指令實體引用 30620.2.4 XML命名空間 30720.2.5 XML DTD 30820.2.6 使用CDATA標簽 30920.3 將XML文檔轉換為HTML加以輸出 30920.4 在PHP中創建XML文檔 31020.5 使用SimpleXML擴展 31020.5.1 創建SimpleXMLElement對象 31020.5.2 訪問特定節點元素和屬性 31220.5.3 添加XML元素和屬性 31220.6 案例實戰——動態創建XML文檔 31320.7 疑難解惑 314第21章 異步通信更高效——PHP與Ajax技術 31521.1 Ajax概述 31621.1.1 什么是Ajax 31621.1.2 Ajax的工作過程 31921.1.3 Ajax的關鍵元素 31921.1.4 CSS與Ajax 32021.2 Ajax的核心技術 32021.2.1 全面剖析XMLHttpRequest對象 32021.2.2 發