PHP深度分析

PHP深度分析

《PHP深度分析:101個核心技巧、竅門和問題解決方法(原書第2版)》適用於具有一定PHP開發經驗的初學人員,對於那些希望改善Web應用程式或提高技術水平的資深開發人員也有很高的參考價值。

內容簡介

《PHP深度分析:101個核心技巧、竅門和問題解決方法(原書第2版)》作者為活躍在PHP開發一線、具有豐富PHP開發經驗的專家,他們把實踐中積累的大量經驗技巧和有針對性的問題的解決方案,結合SitePoint論壇上的一些常見問題的解決方案編寫了《PHP深度分析:101個核心技巧、竅門和問題解決方法(原書第2版)》。《PHP深度分析:101個核心技巧、竅門和問題解決方法(原書第2版)》採用大量實際案例進行深入分析講解,非常有利於讀者的學習理解。《PHP深度分析:101個核心技巧、竅門和問題解決方法(原書第2版)》基本涵蓋了Web開發中常見的問題,讀者可以直接進入到關注的主題進行學習。內容涵蓋使用PDO訪問資料庫,字元串,日期和時間,表單、表格和漂亮整潔的URL,檔案操作、電子郵件、圖像、錯誤處理、防問控制、快取、XML和Web service。

為了輔助《PHP深度分析:101個核心技巧、竅門和問題解決方法(原書第2版)》的學習,作者還建立了一個Web站點,提供代碼和更新等資源支持,網址為http-www-sitepoint-com/books/phpant2/,書山的大量腳註也提供了有用資源的參考。

PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。它可以比 CGI或者Perl更快速的執行動態網頁。用PHP做出的動態頁面與其他的程式語言相比,PHP是將程式嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和最佳化代碼運行,使代碼運行更快。PHP具有非常強大的功能,所有的CGI的功能PHP都能實現,而且支持幾乎所有流行的資料庫以及作業系統。最重要的是PHP可以用C、C++進行程式的擴展!

編輯推薦

《PHP深度分析:101個核心技巧、竅門和問題解決方法(原書第2版)》:

5名世界級專家使用無數的最佳實踐編程實例帶您領略PH P的非凡功力。

所有解決方案都進行了詳盡的解釋,代碼即學即用,可供下載。

《PHP深度分析:101個核心技巧、竅門和問題解決方法(原書第2版)》是想要研究複雜PH P解決方案的PH P開發人員的必備夥伴。

從容地管理錯誤

構建功能表單、表格和SEO友好的U RL

通過客戶端和伺服器端快取減少載入時間

生成和使用Web service

使用訪問控制系統確保網站安全

輕鬆處理檔案、電子郵件和圖像

作者簡介

作者:(美國)沙菲克(Davey Shafik) (美國)Matthew Weier O'phinney (美國)Ben Balbo 等 譯者:周廣輝 楊建軍 王春學 等

BEN BALBO,出生於德國,在英國成長,生活在墨爾本,喜歡Guinness黑啤。在不喝Guinness的時候,他靠擔任PHP開發和培訓師、安全顧問和開源開發者為生。他因公開討論Web開發相關話題而知名,這些話題是墨爾本PHP用戶群和開源開發人員俱樂部委員會提議的。HARRY FUECKS,一位技術作家、程式設計師和系統工程師。1994年起在公司IT部門工作,擁有物理學學士學位。他最早接觸PHP是在1999年,那時他正在組建一個小型的內部網。今天,他是一家公司外網的高級開發人員,PHP在其外網中扮演著重要角色,負責為大量的內勤系統提供一個統一平台。他在業餘時間為SitePoint撰寫技術文章,並且運營討論PHP應用程式設計的網站phppPatterms。

DAVEY SHAFIK,一名具有10年PHP和相關技術經驗的全職PHP開發人員。作為-位熱情的雜誌撰稿人、圖書作者和演講者,DAVEY通過以獨特視角解決問題保持頭腦靈活。LIGAYA TLJRMELLE是一位女強人、偶爾的PHP程式設計師和著迷的世界旅行者。作為phpwomen-org的主要負責人、codewalkers-com的管理員、Zend-com上Developer Zone的巡迴記者、Freenode的#phpc頻道的忙人和PHP博主,她積極地參與到PHP社區中,並且希望有一天能夠與她志同道合的人會面。

MATTHEW WEIER O’PHINNEY是兩個孩子的全職父親,他的空閒時間都花在了PHP開發上。他是一位PEAR開發人員、Zend Framework的核心貢獻者、全面的PHP 5支持者——PHP 6的發布速度對他來說還不夠快。

目錄

譯者序

前言

第1章 概述

1.1 從何處獲得幫助

1.2 什麼是OOP

1.3 如何編寫可移植的PHP代碼

1.4 小結

第2章 使用PDO訪問資料庫

2.1 什麼是PDO

2.2 如何訪問資料庫

2.2.1 解決方案

2.2.2 討論

2.3 如何從表中獲取數據

2.3.1 解決方案

2.3.2 討論

2.4 如何解決SQL查詢中的錯誤

2.4.1 解決方案

2.4.2 討論

2.5 如何向資料庫中添加或修改數據

.2.5.1 解決方案

2.5.2 討論

2.6 如何保護Web站點免受SQL注入攻擊

2.6.1 解決方案

2.6.2 討論

2.7 如何創建靈活的SQL語句

2.7.1 解決方案

2.7.2 討論

2.8 如何獲得受影響的行數

2.9 如何獲得一個新插入行的自動增加欄位

2.9.1 解決方案

2.9.2 討論

2.10 如何搜尋表

2.10.1 解決方案

2.10.2 討論

2.11 如何進行事務處理

2.11.1 解決方案

2.11.2 討論

2.12 如何利用PDO使用存儲過程

2.12.1 解決方案

2.12.2 討論

2.13 如何備份資料庫

2.13.1 解決方案

2.13.2 討論

2.14 小結

第3章 字元串

3.1 如何安全地輸出字元串

3.2 如何保留格式

3.3 如何從文本中剝離HTML標記

3.3.1 解決方案

3.3.2 討論

3.4 如何強制文本在一定數量的字元後折行顯示

3.5 如何執行高級搜尋和替換操作

3.6 如何將文本打散為行數組

3.6.1 解決方案

3.6.2 討論

3.7 如何從文本中移除空白內容

3.8 如何輸出格式化文本

3.9 如何驗證提交的數據

3.9.1 解決方案

3.9.2 討論

3.10 小結

第4章 日期和時間

4.1 如何使用UNIX時間戳

4.1.1 解決方案

4.1.2 討論

4.2 如何獲得當前日期

4.2.1 解決方案

4.2.2 討論

4.3 如何知道是星期幾

4.4 如何獲得一個月份的天數

4.5 如何創建一個日曆

4.6 如何在MySQL中存儲日期

4.6.1 解決方案

4.6.2 討論

4.7 如何使用MySQL時間戳

4.8 如何使用MySQL執行日期計算

第5章 表單、表格和漂亮整潔的URL

5.1 如何使用PHP建HTML表單

5.2 如何在表格中顯示數據

5.3 如何在排序表中顯示數據

5.4 如何創建自定義數據柵格

5.5 如何在PHP中建立“漂亮整潔的”URL

5.5.1 解決方案

5.5.2 討論

5.6 小結

第6章 檔案操作

6.1 如何讀取本地檔案

6.1.1 解決方案

6.1.2 討論

6.2 如何使用檔案句柄

6.2.1 解決方案

6.2.2 討論

6.3 如何修改本地檔案

6.3.1 解決方案

6.3.2 討論

6.4 如何訪問本地檔案的有關信息

6.4.1 解決方案

6.4.2 討論

6.5 如何使用PHP檢查目錄

6.6 如何線上顯示PHP原始碼

6.6.1 解決方案

6.6.2 討論

6.7 如何在檔案中存儲配置信息

6.7.1 解決方案

6.7.2 討論

6.8 如何訪問遠程伺服器上的檔案

6.8.1 解決方案

6.8.2 討論

6.9 如何在PHP中使用FTP

6.9.1 解決方案

6.9.2 討論

6.10 如何使用PHP管理檔案下載

6.10.1 解決方案

6.10.2 討論

6.11 如何使用PHP創建壓縮的ZIP/TAR檔案

6.12 如何使用PHP5中的標準PHP庫操作檔案

6.12.1 解決方案

6.12.2 討論

6.13 小結

第7章 電子郵件

7.1 如何傳送一封簡單的電子郵件

7.1.1 解決方案

7.1.2 討論

7.2 如何簡化複雜電子郵件的生成

7.2.1 解決方案

7.2.2 討論

7.3 如何為訊息添加附屬檔案

7.3.1 解決方案

7.3.2 討論

7.4 如何傳送HTML郵件

7.5 如何將訊息郵寄至一組人員

7.5.1 解決方案

7.5.2 討論

7.6 如何使用PHP處理到達的郵件

7.6.1 解決方案

7.6.2 討論

7.7 如何保護站點免受電子郵件注入攻擊

7.7.1 解決方案

7.7.2 討論

7.8 小結

第8章 圖你

8.1 如何指定正確的圖像MIME類型

8.2 如何創建縮略圖

8.3 如何在不拉伸圖像的情況下調整其大小

8.4 如何構建一個簡單的縮略圖藝術庫

8.5 如何從圖像中提取EXIF信息

8.6 如何為圖像增加水印

8.7 如何使用PHP顯示圖表和圖形

8.7.1 解決方案

8.7.2 討論

8.8 如何防止圖像盜鏈

8.9 如何創建只能人工驗證的圖像

8.9.1 解決方案

8.9.2 討論

8.10 小結

第9章 錯誤處理

9.1 PHP報告哪些錯誤級別

9.2 PHP為錯誤處理提供哪些內置設定

9.3 如何觸發PHP錯誤

9.3.1 解決方案

9.3.2 討論

9.4 如何使用PHP實現自定義錯誤處理器

9.4.1 解決方案

9.4.2 討論

9.5 如何記錄和報告錯誤

9.6 如何使用PHP異常進行錯誤處理

9.6.1 解決方案

9.6.2 討論

9.7 如何創建一個自定義異常類

9.7.1 解決方案

9.7.2 討論

9.8 如何用PHP實現一個自定義異常處理器

9.8.1 解決方案

9.8.2 討論

9.9 如何像處理異常一樣處PHP錯誤

9.9.1 解決方案

9.9.2 討論

9.10 如何恰當地顯示錯誤和異常

9.10.1 解決方案

9.10.2 討論

9.11 如何在發生錯誤時將用戶重定向到另一個頁面

9.11.1 解決方案

9.11.2 討論

9.12 小結

第10章 訪問控制

10.1 如何使用HTTP認證

10.1.1 解決方案

10.1.2 討論

10.2 如何使用會話

10.2.1 解決方案

10.2.2 討論

10.3 如何創建一個會話類

10.4 如何創建一個類來控制對站點部分的訪問

10.4.1 解決方案

10.4.2 討論

10.5 如何建立一個註冊系統

10.5.1 解決方案

10.5.2 討論

10.6 如何處理那些忘記口令的成員

10.7 如何讓用戶更改他們的口令

10.7.1 解決方案

10.7.2 討論

10.8 如何建立一個許可權系統

10.8.1 解決方案

10.8.2 討論

10.9 如何在資料庫中存儲會話

10.10 小結

第11章 快取

11.1 如何阻止網路瀏覽器快取頁面

11.1.1 解決方案

11.1.2 討論

11.2 如何控制客戶端快取

11.2.1 解決方案

11.2.2 討論

11.3 如何在瀏覽器中檢查HTTP頭

11.4 如何使用Ⅲ快取檔案下載

11.5 如何將輸出緩衝用於伺服器端快取

11.5.1 解決方案

11.5.2 討論

11.6 如何只快取頁面中不常改變的部件

11.6.1 解決方案

11.6.2 討論

11.7 如何將PEAR::Cache_Lite用於伺服器端快取

11.8 Cache_Lite支持什麼樣的配置選項

11.9 如何清空CacheLite快取

11.9.1 解決方案

11.9.2 討論

11.10 如何快取函式調用

11.11 本章小結

第12章 XML和Websewice

12.1 什麼樣的XML技術可用於PHP5

12.2 為什麼使用PHP的XML擴展,而非PHP字元串函式

12.2.1 解決方案

12.2.2 討論

12.3 如何解析RSS頻道

12.3.1 解決方案

12.3.2 討論

12.4 如何生成RSS頻道

12.4.1 解決方案

12.4.2 討論

12.5 如何在XML中搜尋一個節點或者內容

12.5.1 解決方案

12.5.2 討論

12.6 如何能夠使用XML-RPCWebservice

12.7 如何實現我自己的XML-RPCWebservice

12.8 如何能夠使用SOAPWebservice

12.8.1 解決方案

12.8.2 討論

12.9 如何能夠實現SOAPWebservice

12.9.1 解決方案

12.9.2 討論

12.10 如何能夠使用REST服務

12.11 如何能夠實現REST服務

12.11.1 解決方案

12.11.2 討論

12.12本章小結

第13章 最佳實踐

13.1 如何跟蹤項目代碼的版本

13.1.1 解決方案

13.1.2 討論

13.2 如何維護單個代碼庫的多個版本

13.2.1 解決方案

13.2.2 討論

13.3 如何編寫分散式代碼

13.3.1 解決方案

13.3.2 討論

13.4 如何為代碼編纂說明文檔以作自己或其他人的後續參考

13.4.1 解決方案

13.4.2 討論

13.5 如何確保代碼將來的變動不會破壞當前的功能

13.5.1 解決方案

13.5.2 討論

13.6 如何判別還有什麼尚待測試

13.7 我已經複查了一些舊的代碼,發現它並不合意,該如何讓其變得更好呢

13.7.1 解決方案

13.7.2 討論

13.8 如何安全地部署代碼

13.8.1 解決方案

13.8.2 討論

13.9 本章小結

附錄A PHP配置

A.1 配置機制

A.2 關鍵的安全性和可移植性設定

A.3 包含和執行設定

A.4 與錯誤相關的設定

A.5 其他設定

附錄B 主機提供商檢查清單

B.1 一般問題

B.1.1 主機支持Linux和Apache嗎

B.1.2 主機提供伺服器的SSH訪問嗎

B.1.3 主機是一個分銷商嗎,或者,他自己維護伺服器嗎

B.1.4 主機“過載”伺服器能夠到什麼程度

B.I.5 主機提供商關於從命令行運行腳本和程式的政策是什麼

B.1.6 主機提供定時訪問這種允許安排批量任務的Unix實用程式嗎

B.2 和PHP相關的問題

B.2.1 能夠在實際上被分配到的伺服器中看到phpinfo的輸出嗎

B.2.2 PHP是作為一個Apache組件安裝的嗎(而非CGI變種)

B.2.3 Apache的settingAllowOverride被設定為Options或者All了嗎

B.2.4 PHP的安全模式禁用了嗎

B.2.5 檢查主機的升級政策

B.2.6 詢問安裝的PHP擴展列表

B.2.7 可從命令行中使用PHP嗎

B.2.8 主機提供商對PHP的理解程度如何

附錄C 安全檢查列表

C.1 十大安全脆弱性

C.1.1 跨站腳本(XSS)

C.1.2 注入攻擊

C.1.3 惡意檔案執行

C.1.4 不安全的直接對象引用

C.1.5 跨站請求偽造(CSRF)

C.1.6 信息泄露和錯誤處理不當

C.1.7 認證和會話管理不完善

C.1.8 不安全的密碼存儲

C.1.9 不安全的通信

C.1.10 限制URL訪問失敗

附錄D 使用PEAR

D.1 安裝PEAR

D.2 PEAR包管理器

D.3 手動安裝PEAR包

D.4 PEAR的供選方案

相關詞條

相關搜尋

熱門詞條

聯絡我們