热门关键字:  听力密码  听力密码  新概念美语  单词密码  巧用听写练听力

PHP深度分析:101个核心技巧、窍门和问题解决方法

中国水利水电出版社
    【作 者】[美]DAVEY SHAFIK 等 【I S B N 】978-7-5084-6989-8 【责任编辑】李炎 【适用读者群】科技 【出版时间】2010-01-01 【开 本】16开本 【装帧信息】平装(光膜) 【版 次】第1版 【页 数】 【千字数】 【印 张】 【定 价】45 【丛 书】暂无分类 【备注信息】
图书详情

            本书作者为活跃在PHP开发一线、具有丰富PHP开发经验的专家,他们把实践中积累的大量经验技巧和有针对性的问题的解决方案,结合SitePoint论坛上的一些常见问题的解决方案编写了本书。本书采用大量实际案例进行深入分析讲解,非常有利于读者的学习理解。本书基本涵盖了Web开发中常见的问题,读者可以直接进入到关注的主题进行学习。内容涵盖使用PDO访问数据库,字符串,日期和时间,表单、表格和漂亮整洁的URL,文件操作、电子邮件、图像、错误处理、访问控制、缓存、XML和Web service。

            为了辅助本书的学习,作者还建立了一个Web站点,提供代码和更新等资源支持,网址为http://www.sitepoint.com/books/phpant2/,书中的大量脚注也提供了有用资源的参考。

    本书适用于具有一定PHP开发经验的初学人员,对于那些希望改善Web应用程序或提高技术水平的资深开发人员也有很高的参考价值。

    Copyright © China WaterPower Press(2009) Authorized translation of the English edition of The PHP Anthology 2nd edition (ISBN 9780975841990) © 2007 SitePoint Pty.Ltd.

    This translation id published and sold by permission of O’Reilly Media, Inc., the owner of all rights to publish and sell the same.

                北京市版权局著作权合同登记号:图字01-2008-5977

     

            关于PHP最伟大的一个方面就是其充满活力的社区。开发人员享有许多在线会面的机会,包括SitePoint论坛 ,在这里开发人员可以相互帮助解决他们在日常工作中遇到的问题,包括从最基础的PHP如何工作到解决像“如何验证一个表单?”这类设计问题。作为一种获得帮助的方法,这些社区做得非常出色。它们包含了保证项目成功所需要的各种重要内容。但是将所有这些知识组合在一起应用于您的特定情况却是一个挑战。社区成员通常会假定其他文章的发布者具有一定程度的知识,您可能经常需要花费大量时间从各种文章、帖子和用户(每个用户具有不同的编程风格)那里抽取一些代码片段拼凑起来形成一个完整的图像。

          《PHP深度分析:101个核心技巧、窍门和问题解决方法》(原书第二版)首次汇集了定期发布在SitePoint论坛上的常见PHP问题的最佳解决方案,并结合了作者们从其多年PHP使用中获得的经验和感悟。

    本书区别于其他PHP图书的地方在于其未采用指南的形式,而是将重点放到怎样以最少精力获得实际结果上。为了达到这种结果,您不必逐页阅读本书,而是采用“即插即用”的方式使用本书中提供的解决方案。为了帮助读者更好地使用本书,每个部分都采用了一致的“问题-解决方案”的方式。可以快速浏览一下目录,直接跳转到针对您问题的解决方案。

    也就是说,有一个隐藏的议题贯穿于本书中所有讨论。除了解决方案,本书还将为您介绍一些能够节省精力的技巧,帮助您减少完成和维护基于Web的PHP应用的时间。

            PHP最早被认为是一种过程化编程语言,但是近些年其已经逐渐被证明为一种面向对象解决方案的开发语言。随着PHP 5的发布,PHP进行了全面重新编写,增加了更多面向对象模型开发的能力。2007年7月13日,PHP开发团队宣布PHP 4终止,从而更加强了PHP 5的开发。

            很多PHP开发人员对面向对象的开发感到恐慌,这些范例也通常被认为只有大师级的人员才能掌握。通过本书,您会发现,掌握目前PHP 5中的面向对象特性和类库根本不需要拥有计算机学位。

    PHP扩展和应用库(PHP Extension and Application Repository,简称PEAR )为世界各地PHP开发人员通常面临的架构问题(例如Web表单生成和验证)提供了一种可重用和易于维护的解决方案集,并且处于不断的发展中。在本书提供的解决方案的开发中,我们采用了本书作者找到的可供自由使用的库,这曾为他们节省了很多开发时间。

    本书区别于当前很多的PHP图书,将重点放在利用可重用组件建立PHP Web应用程序上。尽管本书没有太多关于面向对象设计的扩展讨论,但本书会潜移默化地帮助您将PHP编码技能提高到一个新的水平,逐渐能够创建经得起时间考验的应用程序。

           《PHP深度分析:101个核心技巧、窍门和问题解决方法》(原书第二版)将会使你掌握使用PHP引擎进行开发所应具有的核心技巧,包括对于PHP面向对象开发的快速入门知识(参阅第1章“什么是面向对象”)。在进行了特别的准备之后,本书将着眼于能应用于几乎所有基于PHP的Web应用程序的解决方案上,可能您已经知道这些解决方案,但是还没有完全掌握。

     

    谁应该阅读本书?

          如果曾经使用过PHP,而且可能已经阅读过Kevin Yank的《使用PHP》和《MySQL创建自己的数据库驱动Web站点》(第三版)(SitePoint,墨尔本,ISBN 0-9752402-1-8),并已经使用PHP完成了一或两个项目,那么本书会非常适合您。

           如果曾经对于“如何验证Web页面表单?”、“如何向照片中增加水印?”或“如何从Web应用程序中自动发送电子邮 件?”等问题存有疑问,那么会在本书中找到这些问题的答案。如果希望通过可重用组件、缓冲性能或Web服务来改善Web应用程序或提高技术水平,那么您会发现本书是一个绝佳的选择。

    本书包括哪些内容?

           本书包括以下章节的内容:

           第1章  概述

    本章介绍通过PHP手册和其他资源来获取帮助的方法。包括对于面向对象编程的介绍:PHP类语法的概要介绍,以及面向对象如何应用于PHP。这部分是对后面章节的准备内容。本章还介绍了可移植代码的编写技巧,并且有机会了解一些主要的PHP配置陷阱。

           第2章  使用PDO访问数据库

    本章介绍了所有与PHP数据对象(PDO)扩展相关的知识。本章从基础知识开始介绍,覆盖了像如何编写灵活的SQL语句和避免SQL注入攻击等重要主题。之后对于一些较少人了解的方面进行了深入探讨,例如搜索、事务处理和存储过程、数据库备份等。

          第3章  字符串

    本章探讨处理站点内容的详细方法。我们将通过验证和过滤用户提交内容的过程,学习不可或缺的字符串函数。

         第4章  日期和时间

    通过本章,您将了解如何使用PHP的日期函数,并将实现一个在线日历。您也将会为在MySQL中的日期存储和操作方面打下坚实的基础。

         第5章  表单、表格和漂亮整洁的URL

    本章包括Web页面表单和表格的核心内容。我们将讨论使用PEAR:HTML_QuickForm进行表单开发,还会了解到如何使用PEAR:HTML_Table实现数据表格和页面结果集。我们还会讨论一些用于Apache的生成搜索引擎友好的URL的技巧。

         第6章  文件操作

    本章是PHP文件操作的“生存指南”。在本章中,我们将探讨从访问本地文件系统到使用PHP的FTP客户端获取网络文件等所有内容。我们将会继续学习如何使用PEAR:Archive_Tar创建压缩文件,并简略学习标准PHP库的使用。

         第7章  电子邮件

    在本章中,我们将特别学习电子邮件相关的解决方案,展现如何全面利用PHP电子邮件方面的功能。我们将会学习到借助于PEAR:Mail和PEAR:Mail_Mime成功发送HTML格式的电子邮件和附件,以及使用PHP轻松处理发送到Web服务器的电子邮件。

         第8章  图像

    本章探讨缩略图的创建,并解释如何为站点中的图像增加水印。我们将讨论如何阻止来自其他站点的盗链、使用Exif数据创建图像库系统、使用JpGraph产生一些专业图表——也就是CAPTCHA图。

         第9章  错误处理

    在本章中,您将会理解PHP的错误报告机制,如何利用PHP的自定义错误处理功能,以及如何恰当地处理错误,本章重点放在异常处理和自定义异常上。

         第10章  访问控制

    本章介绍控制站点访问的方法,从基本的HTTP验证开始,然后过渡到应用程序层次的验证。之后的解决方案将实现一个用户注册系统,并创建一套具有用户、组和权限的细粒度访问控制系统。

        第11章  缓存

    本章介绍加速HTML的基本方法,并展示如何在客户端和服务器端利用缓存技术减少带宽使用以及大幅度提高性能。本章内容包括HTTP头、输出缓存和使用PEAR:Cache_Lite等内容。

        第12章  XML和Web service

    随着XML迅速成为几乎所有基于Web的应用程序的重要部分,本章探讨PHP 5丰富的XML功能。在这里,您会发现要生成和使用基于RSS,XML-RPC,SOAP和REST的Web service是多么简单。

        第13章  最佳实践

    本章的目标是介绍一些在促成项目开发成功方面得到验证的技术。内容包括代码版本管理、如何编写可分布代码、如何为您的作品增加API文档、如何利用单元测试减少bug,以及如何安全部署代码等。

     

    译者序
    前言
     
    第1章  概述 1
    1.1  从何处获得帮助 1
    1.2  什么是OOP 6
    1.3  如何编写可移植的PHP代码 22
    1.4  小结 25
    第2章  使用PDO访问数据库 26
    2.1  什么是PDO 27
    2.2  如何访问数据库 27
    2.2.1  解决方案 27
    2.2.2  讨论 28
    2.3  如何从表中获取数据 30
    2.3.1  解决方案 30
    2.3.2  讨论 32
    2.4  如何解决SQL查询中的错误 33
    2.4.1  解决方案 33
    2.4.2  讨论 35
    2.5  如何向数据库中添加或修改数据 35
    2.5.1  解决方案 36
    2.5.2  讨论 37
    2.6  如何保护Web站点免受SQL注入攻击 37
    2.6.1  解决方案 38
    2.6.2  讨论 39
    2.7  如何创建灵活的SQL语句 39
    2.7.1  解决方案 39
    2.7.2  讨论 40
    2.8  如何获得受影响的行数 41
    2.9  如何获得一个新插入行的自动增加字段 43
    2.9.1  解决方案 43
    2.9.2  讨论 44
    2.10  如何搜索表 44
    2.10.1  解决方案 44
    2.10.2  讨论 45
    2.11  如何进行事务处理 45
    2.11.1  解决方案 45
    2.11.2  讨论 46
    2.12  如何利用PDO使用存储过程 46
    2.12.1  解决方案 47
    2.12.2  讨论 48
    2.13  如何备份数据库 48
    2.13.1  解决方案 48
    2.13.2  讨论 50
    2.14  小结 53
    第3章  字符串 54
    3.1  如何安全地输出字符串 55
    3.2  如何保留格式 57
    3.3  如何从文本中剥离HTML标记 58
    3.3.1  解决方案 58
    3.3.2  讨论 58
    3.4  如何强制文本在一定数量的字符后折行显示 59 
    3.5  如何执行高级搜索和替换操作 59
    3.6  如何将文本打散为行数组 60
    3.6.1  解决方案 61
    3.6.2  讨论 61
    3.7  如何从文本中移除空白内容 62
    3.8  如何输出格式化文本 62
    3.9  如何验证提交的数据 63
    3.9.1  解决方案 63
    3.9.2  讨论 66
    3.10  小结 66
    第4章  日期和时间 67
    4.1  如何使用UNIX时间戳 68
    4.1.1  解决方案 68
    4.1.2  讨论 68
    4.2  如何获得当前日期 69
    4.2.1  解决方案 69
    4.2.2  讨论 69
    4.3  如何知道是星期几 70
    4.4  如何获得一个月份的天数 71
    4.5  如何创建一个日历 71
    4.6  如何在MySQL中存储日期 75
    4.6.1  解决方案 76
    4.6.2  讨论 76
    4.7  如何使用MySQL时间戳 76
    4.8  如何使用MySQL执行日期计算 78
    4.9  小结 79
    第5章  表单、表格和漂亮整洁的URL 80
    5.1  如何使用PHP建立HTML表单 81
    5.2  如何在表格中显示数据 88
    5.3  如何在排序表中显示数据 90
    5.4  如何创建自定义数据栅格 93
    5.5  如何在PHP中建立“漂亮整洁的”URL 97
    5.5.1  解决方案 97
    5.5.2  讨论 101
    5.6  小结 101
    第6章  文件操作 102
    6.1  如何读取本地文件 102
    6.1.1  解决方案 103
    6.1.2  讨论 105
    6.2  如何使用文件句柄 105
    6.2.1  解决方案 105
    6.2.2  讨论 107
    6.3  如何修改本地文件 107
    6.3.1  解决方案 107
    6.3.2  讨论 108
    6.4  如何访问本地文件的有关信息 108
    6.4.1  解决方案 108
    6.4.2  讨论 110
    6.5  如何使用PHP检查目录 111
    6.6  如何在线显示PHP源代码 112
    6.6.1  解决方案 112
    6.6.2  讨论 113
    6.7  如何在文件中存储配置信息 113
    6.7.1  解决方案 113
    6.7.2  讨论 114
    6.8  如何访问远程服务器上的文件 115
    6.8.1  解决方案 115
    6.8.2  讨论 115
    6.9  如何在PHP中使用FTP 116
    6.9.1  解决方案 116
    6.9.2  讨论 118
    6.10  如何使用PHP管理文件下载 118
    6.10.1  解决方案 118
    6.10.2  讨论 119
    6.11  如何使用PHP创建压缩的ZIP/TAR文件 119
    6.12  如何使用PHP 5中的标准PHP库操作文件 121 
    6.12.1  解决方案 121
    6.12.2  讨论 122
    6.13  小结 123
    第7章  电子邮件 124
    7.1  如何发送一封简单的电子邮件 124
    7.1.1  解决方案 124
    7.1.2  讨论 125
    7.2  如何简化复杂电子邮件的生成 126
    7.2.1  解决方案 126
    7.2.2  讨论 127
    7.3  如何为消息添加附件 127
    7.3.1  解决方案 127
    7.3.2  讨论 128
    7.4  如何发送HTML邮件 129
    7.5  如何将消息邮寄至一组人员 130
    7.5.1  解决方案 131
    7.5.2  讨论 132
    7.6  如何使用PHP处理到达的邮件 132
    7.6.1  解决方案 132
    7.6.2  讨论 133
    7.7  如何保护站点免受电子邮件注入攻击 134
    7.7.1  解决方案 135
    7.7.2  讨论 135
    7.8  小结 136
    第8章  图像 137
    8.1  如何指定正确的图像MIME类型 137
    8.2  如何创建缩略图 138
    8.3  如何在不拉伸图像的情况下调整其大小 140
    8.4  如何构建一个简单的缩略图艺术库 149
    8.5  如何从图像中提取EXIF信息 151
    8.6  如何为图像增加水印 153
    8.7  如何使用PHP显示图表和图形 155
    8.7.1  解决方案 155
    8.7.2  讨论 161
    8.8  如何防止图像盗链 161
    8.9  如何创建只能人工验证的图像 163
    8.9.1  解决方案 164
    8.9.2  讨论 164
    8.10  小结 164
    第9章  错误处理 166
    9.1  PHP报告哪些错误级别 167
    9.2  PHP为错误处理提供哪些内置设置 167
    9.3  如何触发PHP错误 168
    9.3.1  解决方案 168
    9.3.2  讨论 168
    9.4  如何使用PHP实现自定义错误处理器 169
    9.4.1  解决方案 169
    9.4.2  讨论 172
    9.5  如何记录和报告错误 172
    9.6  如何使用PHP异常进行错误处理 173
    9.6.1  解决方案 173
    9.6.2  讨论 174
    9.7  如何创建一个自定义异常类 176
    9.7.1  解决方案 176
    9.7.2  讨论 177
    9.8  如何用PHP实现一个自定义异常处理器 180
    9.8.1  解决方案 180
    9.8.2  讨论 180
    9.9  如何像处理异常一样处理PHP错误 182
    9.9.1  解决方案 182
    9.9.2  讨论 182
    9.10  如何恰当地显示错误和异常 182
    9.10.1  解决方案 183
    9.10.2  讨论 185
    9.11  如何在发生错误时将用户重定向到另一个页面 185
    9.11.1  解决方案 185
    9.11.2  讨论 187
    9.12  小结 187
    第10章  访问控制 188
    10.1  如何使用HTTP认证 189
    10.1.1  解决方案 189
    10.1.2  讨论 191
    10.2  如何使用会话 193
    10.2.1  解决方案 194
    10.2.2  讨论 194
    10.3  如何创建一个会话类 196
    10.4  如何创建一个类来控制对站点部分的访问 197
    10.4.1  解决方案 197
    10.4.2  讨论 206
    10.5  如何建立一个注册系统 207
    10.5.1  解决方案 207
    10.5.2  讨论 223
    10.6  如何处理那些忘记口令的成员 224
    10.7  如何让用户更改他们的口令 233
    10.7.1  解决方案 233
    10.7.2  讨论 238
    10.8  如何建立一个权限系统 239
    10.8.1  解决方案 239
    10.8.2  讨论 249
    10.9  如何在数据库中存储会话 249
    10.10  小结 257
    第11章  缓存 258
    11.1  如何阻止网络浏览器缓存页面 259
    11.1.1  解决方案 259
    11.1.2  讨论 260
    11.2  如何控制客户端缓存 260
    11.2.1  解决方案 261
    11.2.2  讨论 263
    11.3  如何在浏览器中检查HTTP头 263
    11.4  如何使用IE缓存文件下载 264
    11.5  如何将输出缓冲用于服务器端缓存 264
    11.5.1  解决方案 265
    11.5.2  讨论 266
    11.6  如何只缓存页面中不常改变的部件 267
    11.6.1  解决方案 267
    11.6.2  讨论 270
    11.7  如何将PEAR::Cache_Lite用于服务器端缓存 270
    11.8  Cache_Lite支持什么样的配置选项 273
    11.9  如何清空Cache_Lite缓存 275
    11.9.1  解决方案 275
    11.9.2  讨论 275
    11.10  如何缓存函数调用 275
    11.11  本章小结 277
    第12章  XML和Web service 278
    12.1  什么样的XML技术可用于PHP 5 278
    12.2  为什么使用PHP的XML扩展,而非PHP字符串函数 279
    12.2.1  解决方案 279
    12.2.2  讨论 280
    12.3  如何解析RSS频道 280
    12.3.1  解决方案 280
    12.3.2  讨论 284
    12.4  如何生成RSS频道 285
    12.4.1  解决方案 285
    12.4.2  讨论 288
    12.5  如何在XML中搜索一个节点或者内容 288
    12.5.1  解决方案 289
    12.5.2  讨论 289
    12.6  如何能够使用XML-RPC Web service 290
    12.7  如何实现我自己的XML-RPC Webservice 293 
    12.8  如何能够使用SOAP Web service 297
    12.8.1  解决方案 297
    12.8.2  讨论 298
    12.9  如何能够实现SOAP Web service 298
    12.9.1  解决方案 298
    12.9.2  讨论 300
    12.10  如何能够使用REST服务 300
    12.11  如何能够实现REST服务 305
    12.11.1  解决方案 305
    12.11.2  讨论 306
    12.12  本章小结 306
    第13章  最佳实践 308
    13.1  如何跟踪项目代码的版本 308
    13.1.1  解决方案 309
    13.1.2  讨论 309
    13.2  如何维护单个代码库的多个版本 310
    13.2.1  解决方案 310
    13.2.2  讨论 311
    13.3  如何编写分布式代码 312
    13.3.1  解决方案 312
    13.3.2  讨论 317
    13.4  如何为代码编纂说明文档以作自己或其他人的后续参考 317
    13.4.1  解决方案 317
    13.4.2  讨论 319
    13.5  如何确保代码将来的变动不会破坏当前的功能 321
    13.5.1  解决方案 321
    13.5.2  讨论 327
    13.6  如何判别还有什么尚待测试 328
    13.7  我已经复查了一些旧的代码,发现它并不合意,该如何让其变得更好呢 330
    13.7.1  解决方案 330
    13.7.2  讨论 331
    13.8  如何安全地部署代码 331
    13.8.1  解决方案 331
    13.8.2  讨论 332
    13.9  本章小结 332
    附录A  PHP配置 334
    A.1  配置机制 334
    A.2  关键的安全性和可移植性设置 335
    A.3  包含和执行设置 335
    A.4  与错误相关的设置 337
    A.5  其他设置 337
    附录B  主机提供商检查清单 339
    B.1  一般问题 339
    B.1.1  主机支持Linux和Apache吗 339
    B.1.2  主机提供服务器的SSH访问吗 339
    B.1.3  主机是一个分销商吗,或者,他自己维护服务器吗 340      
    B.1.4  主机“过载”服务器能够到什么程度 340
    B.1.5  主机提供商关于从命令行运行脚本和程序的政策是什么 340        
    B.1.6  主机提供定时访问这种允许安排批量任务的Unix实用程序吗 340   
    B.2  和PHP相关的问题 340
    B.2.1  能够在实际上被分配到的服务器中看到phpinfo的输出吗 340 
    B.2.2  PHP是作为一个Apache组件安装的吗(而非CGI变种) 340        
    B.2.3  Apache的settingAllowOverride被设置为Options或者All了吗 341
    B.2.4  PHP的安全模式禁用了吗 341
    B.2.5  检查主机的升级政策 341
    B.2.6  询问安装的PHP扩展列表 341
    B.2.7  可从命令行中使用PHP吗 341
    B.2.8  主机提供商对PHP的理解程度如何 341
    附录C  安全检查列表 342
    C.1  十大安全脆弱性 342
    C.1.1  跨站脚本(XSS) 342
    C.1.2  注入攻击 343
    C.1.3  恶意文件执行 343
    C.1.4  不安全的直接对象引用 344
    C.1.5  跨站请求伪造(CSRF) 344
    C.1.6  信息泄露和错误处理不当 345
    C.1.7  认证和会话管理不完善 345
    C.1.8  不安全的密码存储 346
    C.1.9  不安全的通信 346
    C.1.10  限制URL访问失败 346
    附录D  使用PEAR 347
    D.1  安装PEAR 348
    D.2  PEAR包管理器 350
    D.3  手动安装PEAR包 351
    D.4  PEAR的供选方案 351
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册