标题：PHP必须知道的300个问题
图书详细信息
  PHP必须知道的300个问题
作 者:潘凯华等主编
出版发行:北京市：清华大学出版社 , 2012.01 
ISBN号:978-7-302-27204-5
原书定价:59.80
印次：1-1
装帧：平装
图书简介
本书以PHP基础知识结构为框架，讲解各部分知识所对应的常见开发疑难问题，并进行透彻地解析。内容包括PHP开发规范与入门要点、PHP基础、Web技术、数据库操作、日期和时间处理、图形图像处理、文件与目录操作、面向对象的程序设计、数据库抽象层、Ajax技术、XML技术、PDF技术、PHP与多媒体技术、Smarty模板、ThinkPHP框架和PHP项目开发技巧。
本书所涉及的疑难问题都是一线开发人员在实际项目中经常遇到的，针对这些问题给出了解决方案，并进行了技术上的解析。读者通过对本书的学习，能够提高实际解决问题的能力。
本书提供了源程序、素材，提供了相关的模块库、案例库、素材库、题库等多种形式的辅助学习资料，还提供迅速及时的微博、QQ、论坛等技术支持。
本书内容详尽，实例丰富，非常适合作为零基础学习人员的学习用书和大中专院校师生的学习教材，也适合作为相关培训机构的师生和软件开发人员的参考资料。
前言
程序员在求职时，经常会被问到有关开发经验的问题，例如“从事了多少年的开发”、“参与了哪些大型项目”等。为何面试官对项目经验丰富的求职者青睐有加？究其根源在于程序开发是一门实践性非常强的学科，正所谓“纸上得来终觉浅，绝知此事要躬行”。编程经验是程序开发者在实践中积累的技术资源库，其中包括各种习惯用法、知识理论、代码片段、应用技巧等。而编程高手一般也是站在前人的肩膀上，分析别人的代码而有所领悟，或者借鉴他人的经验技巧形成自己的技能，在认识错误与解决问题中进步。这也是每个编程者的必由之路。
本书汇集了一线开发人员常见的300个PHP编程疑难问题，每个问题都给出了详细的解答与点评，图文并茂，难易并举，通过本书的学习，相信读者可以尽享前人的开发经验，迅速提升个人的开发能力。
本书内容本书以PHP基础知识结构为框架，给出了每部分知识中可能遇到的疑难问题或开发技巧。全书共分为16章，具体包括：PHP开发规范与入门要点、PHP基础、Web技术、数据库操作、日期和时间处理、图形图像处理、文件与目录操作、面向对象的程序设计、数据库抽象层、Ajax技术、XML技术、PDF技术、PHP与多媒体技术、Smarty模板、ThinkPHP框架和PHP项目开发技巧。
为了更清晰地阐述问题和给出问题的解决方案，本书设置了以下栏目。
问题阐述
对问题进行详细阐述，对复杂问题给出问题产生的条件，并对问题中需要解决的部分做出说明。
专家解答
根据具体问题进行具体分析，给出问题的正确答案及解题思路，并提供该问题涉及的技术知识。
专家点评
对问题及解答做出总结，为以后再出现类似问题提供解决思路，并给出此问题需要注意的事项和对该问题的一些拓展。
本书特色
贴近应用
本书精选的疑难问题都是在实际项目开发中经常遇到的问题，可以解决读者在编程中可能遇到的疑惑。
横向链接
本书知识框架与《PHP快速入门及项目实战》一书相对应，读者可以在使用《PHP快速入门及项目实战》一书进行基础学习之后，再使用本书丰富并提高技能。
解析透彻
本书对每个问题的相关知识进行细致地讲解，并进行知识拓展，使读者不仅知其然，而且知其所以然。
授人以渔
本书在讲解技术的同时还注重对读者能力的培养，帮助读者提高分析问题与解决问题的能力。
本书配套资源
本书提供了内容丰富的配套资源包括：源程序、素材，以及模块库、案例库、题库、素材库等多项辅助内容，读者朋友可以通过如下方式获取。
第1种方式：
（1）登录清华大学出版社的网站，在网页右上角的搜索文本框中输入本书书名（注意区分大小写和留出空格），或者输入本书关键字，或者输入本书ISBN号（注意去掉ISBN号间隔线“-”），单击“搜索”按钮。
（2）找到本书后单击超链接，在该书的网页下侧单击“网络资源”超链接，即可下载。
第2种方式：
访问本书的新浪微博PHPbook，找到配套资源的链接地址进行下载。
读者人群
本书非常适合以下人员阅读从事PHP语言编程行业的开发人员
有一定语言基础，想进一步提高技能的人员
大中专院校的老师和学生
即将走上工作岗位的大学毕业生
相关培训机构的老师和学员
PHP编程爱好者
目录
第1章 PHP开发规范与入门要点问题1 如何在Windows下配置PHP开发环境？ 
问题2 如何在Linux下配置PHP开发环境？
问题3 如何搭建IIS+PHP+MySQL环境？
问题4 PHP集成开发环境的特点有哪些？
问题5 如何应用AppServ搭建PHP开发环境？
问题6 如何通过XAMPP配置PHP开发环境？
问题7 XAMPP——Linux版PHP集成化安装包
问题8 Apache配置文件全解 
问题9 PHP.INI配置文件全解 
问题10 Apache不能处理PHP文件 
问题11 无法找到httpd.h文件 
问题12 Apache不能启动的解决方法 
问题13 如何解决Apache服务器端口冲突？
问题14 如何配置Apache虚拟主机？
问题15 如何动态加载扩展库？
问题16 register_globals（注册为全局变量）的开启与关闭
问题17 为什么要设置时区？
问题18 如何在Dreamweaver中创建站点？
问题19 如何使用Dreamweaver开发PHP程序？
问题20 如何使用Dreamweaver识别.html的模板文件？
问题21 如何在Windows下安装和配置phpMyAdmin？
问题22 如何在Linux下安装和配置phpMyAdmin？
问题23 如何应用phpMyAdmin修改数据库的用户名和密码？
问题24 如何应用phpMyAdmin创建数据库与数据表？
问题25 如何应用phpMyAdmin导入和导出MySQL数据库脚本？
问题26 如何打开magic_quotes_gpc来防止SQL注入？
问题27 如何对错误提示信息进行控制？
问题28 如何记录错误日志？
问题29 如何解决使用MySQL函数导致Apache(IIS)崩溃的问题？
问题30 HTTP Apache错误代码都有哪些？分别代表什么含义？　
第2章 PHP基础问题31 提高编程效率的24招
问题32 为什么页面之间无法传递变量？
问题33 为什么Win32下Apache2用get方法传递中文参数会出错？ 
问题34 如何从文本中移除空白内容？
问题35 如何获取上传文件的后缀？
问题36 如何实现货币数据的格式化输出？
问题37 如何解决用substr()函数对中文字符串截取时的乱码？
问题38 如何获取多个数组元素的键名？
问题39 为什么$array[str]错了？
问题40 如何设置PHP的错误级别？
问题41 PHP有哪几种注释形式？
问题42 如何使用empty()函数判断文本框是否为空？
问题43 如何使用strlen()函数计算文本长度？
问题44 如何使用copy()函数对文件进行复制？
问题45 如何在浏览器中直接输出图像？（fgetc()函数）
问题46 如何关闭危险函数？ 
问题47 如何将数组中的元素合成字符串？
问题48 如何解决使用empty检查函数返回结果时报错？
问题49 如何使用mb_substr函数截取中文字符串？
问题50 如何解决PHP无法执行system()函数的问题？
问题51 如何对查询关键字进行描红？
问题52 如何对字符串与HTML进行转换？
问题53 如何屏蔽违禁词语？
问题54 如何对字符串进行分割及连接？
问题55 如何将IP地址转换成对应的数字？
问题56 如何创建新型字符串？
问题57 如何对字符串进行加密解密？
问题58 如何比较字符串的大小？
问题59 如何获取上传文件的扩展名？
问题60 如何控制页面中输出字符串的长度？
问题61 如何定义上传文件的名称？
问题62 如何通过字符串截取控制图像验证码的输出？
问题63 如何打乱字符串中字符的顺序？
问题64 如何对字符串进行大小写转换？
问题65 函数strstr()、stristr()、strpos()、strrchr() 的区别是什么？
问题66 if和switch语句有何区别？ 
问题67 如何防止页面出现中文乱码？　
第3章 Web技术问题68 如何打印指定框架中的内容？
问题69 如何使用框架嵌套技术居中显示框架页？
问题70 如何为文本框设置只读属性？
问题71 如何实现自动计算金额？
问题72 如何实现复选框中的全选、反选和不选？
问题73 如何对上传的图片进行预览？
问题74 如何制作在页面右下角弹出渐显的广告窗口？
问题75 判断表单动作的技巧有哪些？
问题76 如何使用JS脚本获取、输出标签内容？ 
问题77 如何控制客户端COOKIE？
问题78 COOKIE应用的注意事项有哪些？
问题79 SESSION和COOKIE的区别有哪些？
问题80 如何使用SESSION? 
问题81 如何结束所有SESSION？ 
问题82 如何阻止浏览器缓存页面？ 
问题83 如何控制页面背景的打印？ 
问题84 如何实现文字滑动效果？ 
问题85 如何实现自动登录？ 
问题86 如何统计用户在线时间？
问题87 如何限制用户访问网站的时间？
问题88 如何掌控登录用户的权限？
问题89 如何让SESSION永久有效？
问题90 SESSION购物车
问题91 header()函数都有哪些功能？　
第4章 数据库操作问题92 MySQL数据库开发常识有哪些？ 
问题93 MySQL的常用命令有哪些？
问题94 MySQL数据存储引擎InnoDB和MyISAM的优势及区别有哪些？
问题95 如何在MySQL中实现多关键字查询？
问题96 如何在MySQL中修改用户密码和创建权限用户？
问题97 在MySQL中两种索引Hash与B-Tree的区别是什么？
问题98 应用PHP操作MySQL数据库时应该注意哪些问题？
问题99 应用PHP向MySQL插入数据时，如何避免产生乱码？ 
问题100 MySQL常见错误代码有哪些？ 
问题101 在MySQL中，如何实现多表查询？
问题102 在MySQL中，如何实现内连接查询？
问题103 在MySQL中，如何实现外连接查询？
问题104 在MySQL中，如何实现嵌套查询？
问题105 如何连接远程MySQL服务器？
问题106 如何实现MySQL数据库的双机热备份？
问题107 解决MySQL语句错误的最佳方案是什么？
问题108 如何执行数据的批量添加？
问题109 如何规范地定义数据表中的字段名称？
问题110 如何查询指定时间段的数据？ 
问题111 如何按月查询统计数据？ 
问题112 如何实现在删除数据前给予提示信息？ 
问题113 如何查询日期型数据？
问题114 如何使用左连接（left outer join）查询数据？ 
问题115 如何使用右连接（right outer join）查询数据？
问题116 如何对统计结果进行排序？
问题117 如何使用聚集函数SUM对学生成绩进行汇总？
问题118 如何使用聚集函数MIN求利润最少的商品？
问题119 如何使用聚集函数MAX求销售利润最高的商品？
问题120 如何使用INSERT(s1,x,len,s2)函数替换指定字符？ 
问题121 如何使用UPPER(s)、UCASE(s)函数将字母变成大写？
问题122 如何利用CSS样式实现分页打印？ 
问题123 如何使用RTRIM(s)函数去掉字符串结尾处的空格？
问题124 MySQL数据库的备份和恢复
问题125 如何在MySQL中创建存储过程？
问题126 如何将Access数据导入SQL Server数据库中？
问题127 如何解决PHP不支持SQL Server的问题？
问题128 如何连接带密码的Access数据库？
问题129 MySQL和Server 2000数据库中数据类型的转换
问题130 PHP如何连接SQL Server数据库？ 　
第5章 日期和时间处理问题131 如何获得当前日期？ 
问题132 如何知道是星期几？ 
问题133 如何获得一个月份的天数？ 
问题134 如何在MySQL中存储日期？ 
问题135 如何使用MySQL时间戳？
问题136 如何实现倒计时？
问题137 如何计算程序的运行时间？
问题138 如何获取当前系统时间？
问题139 如何实现网页提醒功能？ 　
第6章 图形图像处理问题140 如何创建缩略图？
问题141 如何防止图像被盗链？
问题142 在PHP中如何激活和屏蔽GD2函数库？ 
问题143 如何在照片上写文字？ 
问题144 在GD2函数库中，如何输出中文字符串？ 
问题145 如何应用GD2函数为图片添加图像水印？
问题146 如何应用GD2函数生成带有干扰的图像验证码？
问题147 如何通过图像显示密码安全强度？
问题148 如何从图像中提取EXIF信息？ 
问题149 如何应用JQuery和Jpgraph制作动态折线图？
问题150 如何通过Jpgraph类库输出中文字符串？
问题151 如何制作数字图像验证码？
问题152 如何制作中文图像验证码？
问题153 如何实现验证码在当前页验证？ 
问题154 如何任意调整图片的大小？　
第7章 文件与目录操作问题155 如何限制上传文件的大小？
问题156 如何判断上传文件是否符合要求？
问题157 如何通过header()函数进行下载？
问题158 如何实现多文件同时上传？
问题159 如何判断文件的权限？
问题160 如何获取磁盘分区的大小？
问题161 如何遍历指定目录下的所有文件？
问题162 如何应用fopen()函数的选择模式？ 
问题163 如何锁定文件？ 
问题164 如何访问远程文件？
问题165 如何读取本地文件？ 
问题166 如何使用文件句柄？
问题167 如何在文件中存储配置信息？
问题168 如何在PHP中创建压缩的RAR文件？
问题169 如何在PHP中对RAR文件进行解压？
问题170 如何将文本文件中的数据存储到数据库中？
问题171 如何判断一个远程的文件是否存在？
问题172 如何将上传文件转换成RAR文件？
问题173 如何遍历、删除指定目录下所有文件？
问题174 如何使用文本文件统计网站访问量？　
第8章 面向对象的程序设计问题175 为什么要面向对象？ 
问题176 构造方法和析构方法有什么不同？
问题177 为什么要封装？ 
问题178 如何继承一个类？
问题179 抽象类与接口的区别是什么？
问题180 如何封装一个项目工具类？ 
问题181 如何将购物车中的功能封装到购物车类中？ 
问题182 如何制作柱形图绘制类？ 
问题183 如何制作折线图绘制类？ 
问题184 如何制作饼形图绘制类？
问题185 如何封装验证码类？　
第9章 数据库抽象层问题186 什么是PDO？ 
问题187 如何安装PDO？
问题188 如何通过PDO访问数据库？
问题189 如何通过PDO读取数据表中的数据？ 
问题190 如何解决SQL查询中的错误？ 
问题191 如何向数据库中添加或修改数据？ 
问题192 如何保护Web站点免受SQL注入攻击？
问题193 如何获得受影响的行数？
问题194 如何进行事务处理？ 
问题195 如何利用PDO使用存储过程？
问题196 如何利用PDO连接Oracle 11g？
问题197 如何封装PDO数据库连接类？
问题198 如何封装PDO数据库操作类？ 
问题199 如何封装PDO分页类？
问题200 如何封装ADODB连接数据库类？
问题201 ADODB操作结果集的方法有哪些？
问题202 ADODB中如何控制结果集的存取方法？
问题203 如何一次连接两个数据库？ 
问题204 如何在ADODB中生成HTML表格？ 
问题205 如何在ADODB中生成下拉列表框？
问题206 一个小巧的分页函数——ADODB_Pager() 
问题207 如何通过事务处理机制保证数据库操作的完整性？
问题208 ADODB如何输出系统中执行的SQL语句？
问题209 ADODB如何应用errorMsg()函数返回错误信息？ 
问题210 ADODB如何返回所有错误信息？ 
问题211 如何将错误信息存储于日志文件中？
问题212 如何封装ADODB操作数据库类？
问题213 如何封装ADODB分页类？　
第10章 Ajax技术问题214 Ajax不刷新页面提交表单数据 
问题215 Ajax无刷新验证用户名是否被占用 
问题216 如何应用Ajax技术实现无刷新下拉列表？
问题217 如何实现Ajax无刷新分页？
问题218 Ajax无刷新倒计时 
问题219 如何让Ajax中的方法熟悉兼容各种不同的浏览器？ 
问题220 jQuery特效复选框的制作方法
问题221 如何使用jQuery技术制作级联菜单？
问题222 如何通过jQuery生成网页特效？ 　
第11章 XML技术问题223 如何处理XML中的数据刷新的问题？ 
问题224 RSS 2.0都包括哪些元素？ 
问题225 如何创建支持RSS阅读的站点？
问题226 如何动态创建XML文件？ 
问题227 如何动态读取XML文件？ 
问题228 如何查询XML文件中的数据？
问题229 如何动态更新XML中的数据？
问题230 如何动态删除XML中的数据？
问题231 如何通过jQuery读取XML中的数据？ 　
第12章 PDF技术问题232 如何创建简单的PDF文档？ 
问题233 如何在PDF中插入图片？
问题234 如何设置PDF文档的页眉与页脚？ 
问题235 如何在PDF文档中绘制表格？
问题236 如何在PDF文档中输出中文？ 
问题237 如何实现PDF文档下载？ 
第13章 PHP与多媒体技术 
问题238 向Flash中传递参数
问题239 如何通过embed标签播放音乐？
问题240 如何通过object标签播放音乐？
问题241 如何实现在线音乐中歌词同步输出？ 
问题242 什么才是音乐在线播放的关键？ 
问题243 （关闭网页时）Ajax无刷新删除.m3u格式的文件 
问题244 如何将选定的音乐添加到播放列表中？
问题245 如何判断在线音乐文件的地址是否正确？
问题246 如何在网页中播放FLV文件？ 
问题247 如何实现MP3在线点播？　
第14章 Smarty模板问题248 如何安装和配置Smarty模板？ 
问题249 如何将Smarty的配置方法封装到类中？ 
问题250 如何通过if语句判断当前用户的权限？
问题251 在Smarty模板中，如何生成数字验证码？ 
问题252 在Smarty模板中，如何直接定义CSS样式？
问题253 在Smarty模板中，如何嵌入JavaScript脚本？
问题254 如何应用html_option函数向下拉列表中添加列表项？ 
问题255 section语句应用的注意事项有哪些？ 
问题256 如何通过section循环输出数据？ 
问题257 如何对Smarty模板中数据进行分页显示？ 
问题258 在Smarty模板中，如何实现日期、时间的格式化输出？ 
问题259 在Smarty模板中，如何应用正则表达式？
问题260 在Smarty模板中，如何对关键字描红？
问题261 在Smarty模板中，如何控制输出字符串的行宽？
问题262 如何应用register_object方法注册模板对象？ 
问题263 如何开启网站页面的缓存？ 
问题264 如何判断同一模板中的多个缓存文件？ 
问题265 如何通过配置文件定义变量？ 
问题266 在Smarty模板中，如何截取中文字符串？ 
问题267 在Smarty中如何进行编码？
问题268 如何在Smarty中定义注册模板函数？ 
问题269 如何在Smarty中设计页面？ 
问题270 如何在Smarty中制作日历？ 
问题271 如何应用Smarty+PDO完成数据的分页显示？　
第15章 ThinkPHP框架问题272 什么是ThinkPHP？有哪些特点？在哪里下载？ 
问题273 如何自动生成项目目录？ 
问题274 ThinkPHP的命名规范有哪些？ 
问题275 ThinkPHP创建项目的基本流程是什么？ 
问题276 如何应用ThinkPHP中的CURD操作用户信息？ 
问题277 如何应用ThinkPHP实现用户登录和数据分页输出？ 
问题278 如何应用验证码类和分页类完成用户登录和分页输出？ 
问题279 如何通过ThinkPHP中的扩展类生成中文验证码？ 
问题280 如何实现传递查询条件的分页？ 
问题281 如何应用ThinkPHP中的扩展类上传文件？ 
问题282 ThinkPHP框架中的模板引擎 　
第16章 PHP项目开发技巧问题283 如何隐藏PHP文件扩展名？
问题284 如何在IIS服务器中实现UrlRewrite（伪静态）功能？ 
问题285 如何在Apache服务器中实现UrlRewrite（伪静态）功能？ 
问题286 如何在分页类中实现UrlRewrite（伪静态）功能？ 
问题287 在PHP中如何动态生成静态页面？ 
问题288 如何应用Zend_mail发邮件？ 
问题289 如何解决使用mail()函数发送邮件时的标题乱码问题？ 
问题290 如何实现带附件的邮件发送？ 
问题291 如何实现邮件群发？ 
问题292 自定义在线编辑器的制作 
问题293 如何应用CKEditor网页编辑器？ 
问题294 如何利用WebBrowser打印报表？ 
问题295 如何调用Word自动打印指定格式的会议记录？ 
问题296 如何将Web页面中的数据导出到Excel中并自动打印？ 
问题297 如何将查询结果保存到Word中？
问题298 如何将查询结果保存到Excel中？ 
问题299 如何实现在线支付（工商银行）？ 
问题300 如何实现在线支付（支付宝支付）？