出版時間:2009 出版社:機(jī)械工業(yè)出版社 作者:Luke Welling,Laura Thomson 頁數(shù):714 譯者:武欣
Tag標(biāo)簽:無
內(nèi)容概要
本書將PHP開發(fā)與MySQL應(yīng)用相結(jié)合,分別對PHP和MySQL做了深入淺出的分析,不僅介紹PHP和MySQL的一般概念,而且對PHP和MySQL的Web應(yīng)用做了較全面的闡述,并包括幾個經(jīng)典且實用的例子。 本書是第4版,經(jīng)過了全面的更新、重寫和擴(kuò)展,包括PHP 5.3最新改進(jìn)的特性(例如,更好的錯誤和異常處理),MySQL的存儲過程和存儲引擎,Ajax技術(shù)與Web 2.0以及Web應(yīng)用需要注意的安全問題。 PHP平IEIMySQL是非常流行的開源技術(shù),它們非常適合快速開發(fā)數(shù)據(jù)庫驅(qū)動的Web應(yīng)用。PHP是一種功能強(qiáng)大的腳本語言,專門用于快速創(chuàng)建高性能的Web應(yīng)用,而MySQL則是一個快速而又可靠的數(shù)據(jù)庫,它能很好地與PHP集成,適用于基于互聯(lián)網(wǎng)的動態(tài)應(yīng)用。 本書介紹了如何使用這些工具創(chuàng)建高效和交互式的Web應(yīng)用。它清晰地介紹了PHP語言的基礎(chǔ),解釋了如何設(shè)置和使用MySQL數(shù)據(jù),以及如何使用PHP與數(shù)據(jù)庫和服務(wù)器進(jìn)行交互。 本書非常實用,包括大量實際應(yīng)用中的例子。例如,用戶驗證、創(chuàng)建購物車、動態(tài)生成PDF文檔和圖像、發(fā)送和管理電子郵件、管理用戶討論、使用XML連接Web服務(wù),以及使用基于Ajax的交互性開發(fā)Web 2.0應(yīng)用。 與上一版相比,本書經(jīng)過了更新、重寫以及擴(kuò)展,并涵蓋了PHP 5到5.3的所有特性,例如命名空間和閉包以及MySQL 5.1引入的特性。
作者簡介
Luke Welling和Laura Thomson合作編寫PHP和MySQL的圖書已經(jīng)超過了20年,如今他們還經(jīng)常出現(xiàn)在一些開源會議上。Luke Welling如今是OmniTI公司的Web架構(gòu)師,而Laura Thomson是Mozilla公司W(wǎng)eb團(tuán)隊的資深軟件工程師。
書籍目錄
讀者反饋?zhàn)g者序前言第一篇 使用PHP 第1章 PHP快速入門教程 1.1 開始之前:了解PHP 1.2 創(chuàng)建一個示例應(yīng)用:Bob汽車零部件商店 1.3 在HTML中嵌入PHP 1.4 添加動態(tài)內(nèi)容 1.5 訪問表單變量 1.6 理解標(biāo)識符 1.7 檢查變量類型 1.8 聲明和使用常量 1.9 理解變量的作用域 1.10 使用操作符 1.11 計算表單總金額 1.12 理解操作符的優(yōu)先級和結(jié)合性 1.13 使用可變函數(shù) 1.14 根據(jù)條件進(jìn)行決策 1.15 通過迭代實現(xiàn)重復(fù)動作 1.16 從控制結(jié)構(gòu)或腳本中跳出 1.17 使用可替換的控制結(jié)構(gòu)語法 1.18 使用declare 1.19 下一章 第2章 數(shù)據(jù)的存儲與檢索 2.1 保存數(shù)據(jù)以便后期使用 2.2 存儲和檢索Bob的訂單 2.3 文件處理 2.4 打開文件 2.5 寫文件 2.6 關(guān)閉文件 2.7 讀文件 2.8 使用其他有用的文件函數(shù) 2.9 文件鎖定 2.10 更好的方式:數(shù)據(jù)庫管理系統(tǒng) 2.11 進(jìn)一步學(xué)習(xí) 2.12 下一章 第3章 使用數(shù)組 3.1 什么是數(shù)組 3.2 數(shù)字索引數(shù)組 3.3 使用不同索引的數(shù)組 3.4 數(shù)組操作符 3.5 多維數(shù)組 3.6 數(shù)組排序 3.7 多維數(shù)組的排序 3.8 對數(shù)組進(jìn)行重新排序 3.9 從文件載入數(shù)組 3.10 執(zhí)行其他的數(shù)組操作 3.11 進(jìn)一步學(xué)習(xí) 3.12 下一章 第4章 字符串操作與正則表達(dá)式 4.1 創(chuàng)建一個示例應(yīng)用程序:智能表單郵件 4.2 字符串的格式化 4.3 用字符串函數(shù)連接和分割字符串 4.4 字符串的比較 4.5 使用字符串函數(shù)匹配和替換子字符串 4.6 正則表達(dá)式的介紹 4.7 用正則表達(dá)式查找子字符串 4.8 使用正則表達(dá)式分割字符串 4.9 比較字符串函數(shù)和正則表達(dá)式函數(shù) 4.10 進(jìn)一步學(xué)習(xí) 4.11 下一章 第5章 代碼重用與函數(shù)編寫 5.1 代碼重用的好處 5.2 使用require()和include()函數(shù) 5.3 在PHP中使用函數(shù) 5.4 理解為什么要定義自己的函數(shù) 5.5 了解基本的函數(shù)結(jié)構(gòu) 5.6 使用參數(shù) 5.7 理解作用域 5.8 參數(shù)的引用傳遞和值傳遞 5.9 使用Return關(guān)鍵字 5.10 實現(xiàn)遞歸 5.11 進(jìn)一步學(xué)習(xí) 5.12 下一章 第6章 面向?qū)ο蟮腜HP 6.1 理解面向?qū)ο蟮母拍? 6.2 在PHP中創(chuàng)建類、屬性和操作 6.3 類的實例化 6.4 使用類的屬性 6.5 使用private和public關(guān)鍵字控制訪問 6.6 類操作的調(diào)用 6.7 在PHP中實現(xiàn)繼承 6.8 類的設(shè)計 6.9 編寫類代碼 6.10 理解PHP面向?qū)ο笮碌母呒壒δ? 6.11 下一章 第7章 錯誤和 異常處理 7.1 異常處理的概念 7.2 Exception類 7.3 用戶自定義異常 7.4 Bob的汽車零部件商店應(yīng)用程序的異常 7.5 異常和PHP的其他錯誤處理機(jī)制 7.6 進(jìn)一步學(xué)習(xí) 7.7 下一章 第二篇 使用MySQL 第8章 設(shè)計Web數(shù)據(jù)庫 8.1 關(guān)系數(shù)據(jù)庫的概念 8.2 如何設(shè)計Web數(shù)據(jù)庫 8.3 Web數(shù)據(jù)庫架構(gòu) 8.4 進(jìn)一步學(xué)習(xí) 8.5 下一章 第9章 創(chuàng)建Web數(shù)據(jù)庫 9.1 使用MySQL監(jiān)視程序 9.2 登錄到MySQL 9.3 創(chuàng)建數(shù)據(jù)庫和用戶 9.4 設(shè)置用戶與權(quán)限 9.5 MySQL權(quán)限系統(tǒng)的介紹 9.6 創(chuàng)建一個Web用戶 9.7 使用正確的數(shù)據(jù)庫 9.8 創(chuàng)建數(shù)據(jù)庫表 9.9 理解MySQL的標(biāo)識符 9.10 選擇列數(shù)據(jù)類型 9.11 進(jìn)一步學(xué)習(xí) 9.12 下一章 第10章 使用MySQL數(shù)據(jù)庫 10.1 SQL是什么 10.2 在數(shù)據(jù)庫中插入數(shù)據(jù) 10.3 從數(shù)據(jù)庫中獲取數(shù)據(jù) 10.4 更新數(shù)據(jù)庫記錄 10.5 創(chuàng)建后修改表 10.6 刪除數(shù)據(jù)庫中的記錄 10.7 表的刪除 10.8 刪除整個數(shù)據(jù)庫 10.9 進(jìn)一步學(xué)習(xí) 10.10 下一章 第11章 使用PHP從Web訪問MySQL數(shù)據(jù)庫 11.1 Web數(shù)據(jù)庫架構(gòu)的工作原理 11.2 從Web查詢數(shù)據(jù)庫的基本步驟 11.3 將新信息放入數(shù)據(jù)庫 11.4 使用Prepared語句 11.5 使用PHP與數(shù)據(jù)庫交互的其他接口 11.6 進(jìn)一步學(xué)習(xí) 11.7 下一章 第12章 MySQL高級管理 12.1 深入理解權(quán)限系統(tǒng) 12.2 提高M(jìn)ySQL數(shù)據(jù)庫的安全性 12.3 獲取更多關(guān)于數(shù)據(jù)庫的信息 12.4 數(shù)據(jù)庫的優(yōu)化 12.5 備份MySQL數(shù)據(jù)庫 12.6 恢復(fù)MySQL數(shù)據(jù)庫 12.7 實現(xiàn)復(fù)制 12.8 進(jìn)一步學(xué)習(xí) 12.9 下一章 第13章 MySQL高級編程 13.1 LOAD DATA INFILE語句 13.2 存儲引擎 13.3 事務(wù) 13.4 外鍵 13.5 存儲過程 13.6 進(jìn)一步學(xué)習(xí) 13.7 下一章 第三篇 電子商務(wù)與安全性 第14章 運(yùn)營一個電子商務(wù)網(wǎng)站 14.1 我們要實現(xiàn)什么目標(biāo) 14.2 考慮電子商務(wù)網(wǎng)站的類型 14.3 理解風(fēng)險和威脅 14.4 選擇一個策略 14.5 下一章 第15章 電子商務(wù)的安全問題 15.1 信息的重要程度 15.2 安全威脅 15.3 易用性,性能、成本和安全性 15.4 建立一個安全政策 15.5 身份驗證原則 15.6 加密技術(shù)基礎(chǔ) 15.7 數(shù)字證書 15.8 安全的Web服務(wù)器 15.9 審計與日志記錄 15.10 防火墻 15.11 備份數(shù)據(jù) 15.12 自然環(huán)境安全 15.13 下一章 第16章 Web應(yīng)用的安全 16.1 處理安全性問題的策略 16.2 識別所面臨的威脅 16.3 了解與我們“打交道”的用戶 16.4 代碼的安全性 16.5 Web服務(wù)器和PHP的安全性 16.6 數(shù)據(jù)庫服務(wù)器的安全性 16.7 保護(hù)網(wǎng)絡(luò) 16.8 計算機(jī)和操作系統(tǒng)的安全性 16.9 災(zāi)難計劃 16.10 下一章 第17章 使用PHP和MySQL實現(xiàn)身份驗證 17.1 識別訪問者 17.2 實現(xiàn)訪問控制 17.3 使用基本身份驗證 17.4 在PHP中使用基本身份驗證 17.5 在Apache的.htaccess文件中使用基本身份驗證 17.6 使用mod_auth_mysql身份驗證 17.7 創(chuàng)建自定義身份驗證 17.8 進(jìn)一步學(xué)習(xí) 17.9 下一章 第18章 使用PHP和MySQL實現(xiàn)安全事務(wù) 18.1 提供安全的事務(wù)處理 18.2 使用加密套接字層(SSL) 18.3 屏蔽用戶的輸入 18.4 提供安全存儲 18.5 存儲信用卡號碼 18.6 在PHP中使用加密技術(shù) 18.7 進(jìn)一步學(xué)習(xí) 18.8 下一章 第四篇 PHP的高級技術(shù) 第19章 與文件系統(tǒng)和服務(wù)器的交互 19.1 文件上載 19.2 使用目錄函數(shù) 19.3 與文件系統(tǒng)的交互 19.4 使用程序執(zhí)行函數(shù) 19.5 與環(huán)境變量交互:getenv()和putenv() 19.6 進(jìn)一步學(xué)習(xí) 19.7 下一章 第20章 使用網(wǎng)絡(luò)函數(shù)和協(xié)議函數(shù) 20.1 了解可供使用的協(xié)議 20.2 發(fā)送和讀取電子郵件 20.3 使用其他Web站點(diǎn)的數(shù)據(jù) 20.4 使用網(wǎng)絡(luò)查找函數(shù) 20.5 備份或鏡像一個文件 20.6 進(jìn)一步學(xué)習(xí) 20.7 下一章 第21章 日期和時間的管理 第22章 創(chuàng)建圖像 第23章 在PHP中使用會話控制 第24章 其他有用的特性 第五篇 創(chuàng)建實用的PHP和MySQL項目 第25章 在大型項目中使用PHP和MySQL 第26章 調(diào)試 第27章 建立用戶身份驗證機(jī)制和個性化設(shè)置 第28章 創(chuàng)建一個購物車 第29章 創(chuàng)建一個基于Web的電子郵件服務(wù)系統(tǒng) 第30章 創(chuàng)建一個郵件列表管理器 第31章 創(chuàng)建一個Web論壇 第32章 生成PDF格式的個性化文檔 第33章 使用XML和SOAP來連接Web服務(wù) 第34 章使用Ajax構(gòu)建Web 2.0應(yīng)用附錄 附錄A 安裝PHP及MySQL 附錄B Web資源
章節(jié)摘錄
5.1 代碼重用的好處 軟件工程師的一個目標(biāo)就是通過重復(fù)使用代碼來避免編寫新的代碼。這樣做并不是因為他們懶,而是因為重新使用已有的代碼可以降低成本、增加代碼的可靠性并提高它們的一致性。在理想情況下,一個新的項目是這樣創(chuàng)建的:它將已有的可重新利用的組件進(jìn)行組合,并將新的開發(fā)難度降低到最小。 5.1.1 成本 在一個軟件的有效生命周期中,相當(dāng)多的時間是用在維護(hù)、修改、測試和文檔化記錄上,而不是最初花在編碼上的時間。如果要編寫商業(yè)代碼,應(yīng)該盡量限制結(jié)構(gòu)中所用到的代碼行數(shù)。一個最常使用的方法就是:重新使用已有的代碼,而不是為一個新任務(wù)編寫一個和原來代碼只有微小區(qū)別的新代碼。更少的代碼意味著更低的成本。如果市場上已經(jīng)存在能夠滿足需求的軟件,那就購買軟件。購買已有軟件的成本總是要小于開發(fā)一個等價產(chǎn)品的成本。如果有現(xiàn)成的軟件基本上能夠滿足要求,那就必須小心地使用它。修改已有的代碼可能會比編寫新代碼更加困難。 5.1.2 可靠性 如果一個模塊代碼已經(jīng)在代碼結(jié)構(gòu)中使用了,可以認(rèn)為它是已經(jīng)通過測試的。即使代碼只有幾行,在重寫時仍然可能忽略兩方面的內(nèi)容,一是原作者融入其中的某些東西,二是代碼測試發(fā)現(xiàn)缺陷后,對原來代碼添加的一些東西。使用現(xiàn)存的成熟的代碼通常要比新鮮的“綠色”代碼更可靠。 5.1.3 一致性 系統(tǒng)的外部接口應(yīng)該是一致的,其中包括用戶接口和系統(tǒng)的外部接口。編寫一段新的并且能夠和系統(tǒng)函數(shù)的其他部分保持一致的代碼需要花些心思和努力。如果重復(fù)使用運(yùn)行在系統(tǒng)其他部分的代碼,所實現(xiàn)的功能自然就會達(dá)到一致。 除了這些優(yōu)點(diǎn)外,只要原來的代碼是模塊化的而且編寫良好,那么重復(fù)使用代碼還會節(jié)省許多工作。在工作時,可以試著辨認(rèn)一下今后可能再次要調(diào)用的代碼段。 5.2 使用require()和include()函數(shù) PHP提供了兩個非常簡單卻很有用的語句,它們允許重新使用任何類型的代碼。使用一條require()或include()語句,可以將一個文件載入到PHP腳本中。通常,這個文件可以包含任何希望在一個腳本中輸入的內(nèi)容,其中包括PHP語句、文本、HTML標(biāo)記、PHP函數(shù)或PHP類。 這些語句的工作方式類似于大多數(shù)Web服務(wù)器提供的服務(wù)器端包含方式以及C語言或C++中的#include語句。require()和include()幾乎是相同的。二者唯一的區(qū)別在于函數(shù)失敗后,require()函數(shù)將給出一個致命的錯誤。而include()只是給出一個警告。require()和include()也有兩個變體函數(shù),分別是require_once()和include_once()。正如你可能猜到的,這兩個函數(shù)的作用是一個被引入(included)的文件只能被引入一次。對于我們已經(jīng)介紹過的例子——頁眉和腳注(header and footer)——這個功能并不是非常有用。當(dāng)使用require()和include()來引入函數(shù)庫時,它們才非常有用。使用這兩個函數(shù)可以防止錯誤的引入同樣的函數(shù)庫兩次,從而出現(xiàn)重復(fù)定義的錯誤。如果關(guān)心編碼實踐,可以考慮使用require()和include(),因為它們的運(yùn)行速度較快。 5.2.1 文件擴(kuò)展名和require()函數(shù) 如下所示的代碼保存于reusable.php文件中: 如下所示的代碼保存于main.php文件中: 如果載入reusable.php,當(dāng)瀏覽器中顯示出“Here is a very simple PHP statement”時,你不會感到奇怪。如果載入main.php,則會發(fā)生一件更有趣的事情。該腳本輸出結(jié)果如圖5-1所示。 當(dāng)需要一個文件的時候,可以使用require()語句。在前面的例子中,我們使用的文件是reusable.php。當(dāng)運(yùn)行該腳本時,require()語句:將被請求的文件內(nèi)容代替,然后再執(zhí)行腳本。這就意味著,當(dāng)載入main.php文件時,它會像如下所示的代碼那樣執(zhí)行: 當(dāng)使用require()語句時,必須注意處理文件擴(kuò)展名和PHP標(biāo)記的不同方式。 PHP并不會查看所需文件的擴(kuò)展名。這就意味著,只要不想直接調(diào)用這個文件,就可以任意命名該文件。當(dāng)使用require()語句載入文件時,它會作為PHP文件的一部分被執(zhí)行。 通常,如果PHP語句放在一個HTML文件(例如,名為page.html的文件)中時,它們是不會被處理的。PHP通常用來解析擴(kuò)展名被定義成如.php的文件。(在Web服務(wù)器配置文件中可能不是這樣)但是,如果通過require()語句載入這個page.html,文件內(nèi)的任何PHP命令都會被處理。因此,可以使用任何擴(kuò)展名來命名包含文件,但要盡量遵循一個約定,例如將擴(kuò)展名命名為.inc是一個很好的辦法。 需要注意的一個問題是,如果擴(kuò)展名為.inc或一些其他的非標(biāo)準(zhǔn)擴(kuò)展名的文件保存在Web文檔樹中,而且用戶可以在瀏覽器中直接載入它們,用戶將可以以普通文本的形式查看源代碼,包括任何密碼。因此,將被包含文件保存在文檔樹之外,或使用標(biāo)準(zhǔn)的文件擴(kuò)展名是非常重要的。 提示:在這個例子中,可重用文件(reusable.php)代碼如下所示:我們將文件中的PHP代碼放到PHP標(biāo)記之間。如果希望一個所需文件中的PHP代碼能被當(dāng)成PHP代碼進(jìn)行處理,就必須這樣做。如果不使用PHP標(biāo)記,代碼將會被視為文本或者HTML腳本,因此也就不會被執(zhí)行。 5.2.2 使用require()制作Web站點(diǎn)的模版 如果Web頁面具有一致的外觀,可以在PHP中使用require()語句將模版和標(biāo)準(zhǔn)元素加到頁面中。 例如,一個虛構(gòu)的TLA咨詢公司的網(wǎng)站有許多頁面,這些頁面的外觀看上去都如圖5-2所示。當(dāng)需要一個新頁面的時候,開發(fā)人員可以打開一個已有頁面,從文件中間剪切所需的文本,輸入所需的新文本,然后以新的文件名保存。 考慮這種情況:網(wǎng)站已經(jīng)存在了一段時間,如今已有數(shù)十個、數(shù)百個甚至數(shù)千個頁面都是同一種風(fēng)格?,F(xiàn)在,要對標(biāo)準(zhǔn)外觀進(jìn)行部分修改—這種修改可能是很微小的改變,例如,在每個腳注上加一個電子郵件地址,或者加上一個新的導(dǎo)航菜單入口。你希望對這數(shù)十個、數(shù)百個甚至數(shù)千個頁面都做這種微小的修改嗎? 相對于剪切粘貼數(shù)十個、數(shù)百個甚至數(shù)千個頁面,直接重用各個頁面中通用的HTML代碼部分是一個更好的辦法。程序清單5-1給出了圖5-2所示頁面(home.html)的源代碼。
編輯推薦
《php和mysql web開發(fā)(原書第4版)》:開發(fā)人員專業(yè)技術(shù)叢書。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
PHP和MySQL Web開發(fā)(原書第4版) PDF格式下載