字号:    

[每周新书]<第3期>

春泥书店欢迎您!

春泥书店第三期推荐新书,共5本.[10.18] 

1.为企业工作就是为自己工作

2.打造卓越销售团队——世界上最伟大的销售团队如何做事
3.精通JavaScript动态网页编程(实例版)

4.PHP 5与MySQL 5 Web开发技术详解(含光盘1张)

5.走进搜索引擎


 

 

1.为企业工作就是为自己工作

      夏志清 著

    本书通过深刻剖析“为企业工作就是为自己工作,对工作负责就是对自己负责”这一理念,告诉员工,只要愿意把工作当成自己的事业一样来经营,把企业的事当成自己的事一样来负责,就能够有效地挖掘自己沉睡的潜能,达到最大限度的成功,从而激励员工自动自发、充满激情地投入到工作当中。

 这是一本可以实现企业和员工双赢的书,不仅向员工传播了先进的工作理念,更是一本极具操作性的行动指南。采用本书的理念和方法,既能促进员工自身的成长,又能加快企业的快速发展,是一本有价值的企业员工内训读本。

 

标准书号 ISBN 978-7-115-16754-5 页   数 164  页
开   本 小16开 版   次 第1版第1次
初版时间 2007年10月 本印次时间 2007年10月
责任编辑 刘依 定   价 19.8元
印    张 11   字    数 91  千字
初版印数  本 库   存

第一章 把工作当成自己的事业来经营 1
 没有卑微的工作,只有卑微的工作态度 3
 不要只想着企业能给你什么 7
 搞清楚自己到底在为谁工作 11
 把企业的事当成自己的事 15
 工作是成就事业的基础 19
 像老板一样思考和工作 23
第二章 对企业负责就是对自己负责 29
 敷衍工作就是在敷衍自己 31
 对工作负责应该贯彻始终 35
 人可以不伟大,但不可以没有责任心 40
 培养自己的责任心 46
 利用不同的工作机会锻炼自己 52
第三章 不要仅仅为工资工作 57
 不要仅仅为了工资而工作 59
 为价值工作而不是为薪水工作 66
 不为薪水而工作,薪水才会提高 71
 有多少付出,就会有多少收获 74
 不要太过于注重眼前的利益 78
第四章 勇于挑战自己的能力极限 83
 不要满足于尚可的工作表现 85
 不要只做上级交代你的事 89
 为自己设定一个高目标 92
 无论事大事小,都要努力做好 98
 成熟的果子最甜 102
 知识改变命运,学习决定未来 106
第五章 与企业一起成长 111
 个人的发展离不开企业的发展 113
 与企业同甘共苦 117
 把自己当成主人才能成为主人 120
 抵御诱惑,永不出卖企业 125
 忠于企业就是忠于自己 128
第六章 有为,才能有位 139
 有为才有位 141
 欲“有位”,先“定位” 144
 谨慎处理“有位”后的人际关系 148
 怎样做到有位更有为 158
 从现在开始,立即行动 161


2.打造卓越销售团队——世界上最伟大的销售团队如何做事
      [美]瑞克·佩吉(Rick Page) 著

封面     本书从销售经理们经常面临的难题出发,帮助读者识别出销售成功的五个通用层面,即技巧、技术、人才、团队合作和信任;同时在销售策略的四个层次(个人技能、机会管理、客户管理和行业/市场信息宣传)示范了不同的应用方法,列举了数十个来自世界顶尖销售组织的成功做法,并向读者展示了如何借鉴这些成功做法,实现销售目标。
   
  本书既适合销售人员阅读,也适合市场营销人员、管理和行政人员阅读。
标准书号 ISBN 978-7-115-16789-7 页   数 193  
开   本 小16开 版   次 第1版第1次
初版时间 2007年11月 本印次时间 2007年11月
责任编辑 许文瑛 定   价 28元
印    张 13   字    数 155  千字
初版印数   库   存 有 书

 

 

第一部分 销售组织面临的挑战与最优解决之道 001
第1章 管理者,告诉我哪儿出了问题 003
  我们需要有多好?多好才算好 005
  致命12条:12个令销售经理挠头的问题 005
  销售进程的演化 009
第2章 持久优势之路 011
  “没有愿景,人民灭亡” 014
  争取变革时间——设立管理预期 015
  确定工作的优先顺序 016
  销售工作转型八步曲 021
第3章 销售团队计分卡 027
  高效销售最佳做法:组织转型的五个“T” 028
  销售策略的四个层次 030
  高效销售计分卡 032
第二部分 人才 033
第4章 人才 035
  企业CFO和分析家设计的陷阱 035
  提前招聘,保持领先 037
  书面标准——看得见的成功前景 039
  糟糕招聘带来的成本 041
  佩吉成功招聘的10个P 050
  在面试中开始绩效管理 059
  人才计分卡 060
第三部分 技巧 063
第5章 技巧 065
  R.A.D.A.R.:机会管理的6P 066
  T.E.A.M.:管理战略性客户的8个策略 067
  完善和提升 073
  定义适合您的组织的最佳销售模式 085
  现在,进行预测具有战略意义 087
  技巧计分卡 090
第四部分 团队合作 093
第6章 团队合作 095
  团队销售 096
  策略研讨会——您何时想要坏消息?您想从谁
  那儿得到这些消息 102
  团队合作计分卡 108
第五部分 技术 111
第7章 技术 113
  CRM——讲究关系艺术的领域 113
  CRM:降低成本的管理 116
  一线销售力量到最后才被考虑 119
  销售人员个体所用的工具 122
  科技辅助下的机会指导 123
  停止在茫茫客户森林中盲目搜索——开始指导,
  然后去赢 126
  机会与预测 128
  竞争情报技术 130
  客户管理工具 132
  新型搜索工具 133
  有效管理客户的障碍 134
  缩小营销与销售之间的差距 136
  技术计分卡 140
第六部分 信任 143
第8章 信任 145
  做事从心开始 145
  信任计分卡 161
第七部分 转型 163
第9章 转型——增强粘性 165
  销售人员如何学习:C.A.S.H.学习模型 166
  让它具有粘性 168
  进入第四段:持久优势 174
  动机如何 180
  获得持久优势 182
  总结:转型地图 183
  转型计分卡 184
附录 187
  R.A.D.A.R.R——赢得复杂交易的6P 187


3.精通JavaScript动态网页编程(实例版)
      王润森 王俊杰 编著

封面     本书通过大量实例代码,以ECMA-262版本3为基础,结合JavaScript 1.5和JavaScript 5.5,由浅入深、循序渐进地介绍了JavaScript知识要点与编程设计技巧,以及JavaScript对XML的支持和Ajax的应用。全书分为9个部分,共36章,内容涵盖了JavaScript基本语法、JavaScript事件、页面与表格处理、表单与窗口操作、图像显示、菜单操作、文字特效、XML操作、Ajax应用等,对当前网页设计中的各个方面都进行了详尽的介绍。本书最大的特色在于通过大量的代码实例对各个知识点进行实际应用的讲解,力求使读者通过对代码的分析,提高学习兴趣,加强对知识点的理解。
  本书适用于各级网页编程设计用户,同时也可作为高校相关专业师生和社会培训班的辅助教材。
标准书号 ISBN 978-7-115-16644-9 页   数 656  
开   本 16开 版   次 第1版第1次
初版时间 2007年10月 本印次时间 2007年10月
责任编辑 屈艳莲 定   价 75元
印    张 43.25   字    数 1044  千字
初版印数   库   存 有 书  
光    盘 含光盘    

 

 第1部分 基本语法
第1章 数据类型转换 3
1.1 自动类型转换 3
  在代码执行过程中,JavaScript会根据需要进行自动类型转换。本节实例给出了自动类型转换的方法。本节代码主要使用document.write ()语句、逻辑值作为判断条件。
1.2 显式类型转换 7
  除自动类型转换外,有时候为了避免自动转换或不转换产生的不良后果,需要手动进行显示的类型转换。本节实例给出显示类型转换的用法。主要使用String对象的toLowerCase ()方法、Global对象的toString()方法、parseInt()方法和parseFloat()方法,以及typeof运算符。
1.3 提升基本类型为对象 9
  每一个基本数据类型都存在一个相应的对象,这些对象提供了一些很有用的方法用于处理基本数据。在需要的时候,JavaScript会自动将基本数据类型转换为与之相应的对象。本节实例介绍提升基本类型为对象的应用方法。主要使用String对象的length属性、link ()方法、big ()方法、bold ()方法、fontcolor ()方法、indexOf () 方法、lastIndexOf ()方法和charAt ()方法,另外,还应用到了数组的定义与赋值,以及数组转换为字符串的join()方法。
第2章 流程控制语句 13
2.1 if语句 13
  本节实例给出if语句及其嵌套语句的使用方法。程序要求用户输入一个数字,根据输入内容的不同,给出不同的提示信息。主要使用if语句的嵌套和alert()方法。
2.2 switch语句 16
  本节实例给出switch语句的使用方法。将上一节的代码进行改写。程序要求用户输入一个数字,根据输入内容的不同,给出不同的提示信息。
2.3 while循环 19
  本节实例给出while语句的使用方法。程序要求用户输入行数和列数,根据用户输入的内容,画出相应行数和列数的表格。本节代码主要使用while语句和document.write()方法。
2.4 do-while循环 22
  本节实例给出do-while循环语句的使用方法。将上一节的代码进行适当改写,程序要求用户输入行数和列数,但程序不会输出正确的结果。据此,读者可以体会do-while循环和while循环语句的区别。
2.5 for循环 25
  本节实例给出for循环语句及其嵌套的使用方法。将2.3节的代码进行了改写。程序要求用户输入表格的行列数,根据输入内容的不同,给出不同的信息。
第3章 数组 29
3.1 遍历数组元素 29
  数组是一种特殊的数据结构,本节实例给出了数组定义与赋值的方法,同时给出了数组元素显示输出的方法。主要使用数组的定义与赋值、数组元素的显示输出,以及Array对象的length属性。
3.2 改变数组元素 32
  在代码执行过程中,随着运算环境的不同,数组元素会随时进行改变。本节实例给出了数组元素改变的方法。主要使用数组元素赋值、delete操作和数组长度重置。
3.3 用对象的方式实现数组 35
  除用传统方式进行数组定义与引用外,还可以使用对象的方式完成。本节实例给出了一个使用对象的方式实现数组的方法示例。主要使用this语句和专门用于对象的for...in语句。
3.4 将数组转换为字符串 36
  数组元素可以是多种类型的数据,但都可以转换为字符串。本节实例给出了将数组转换为字符串的方法。主要使用Array对象的join ()方法。
3.5 操作数组元素 38
  数组元素可以进行多种操作,本节实例给出了数组元素排序、子数组查找、数组元素增删等操作方法。主要使用Array对象的slice ()方法、sort ()方法和splice ()方法。
3.6 实现多维数组 40
  JavaScript中并没有多维数组的概念,但在实际应用中,会经常用到多维数组。本节实例给出了二维数组的一种实现方法,读者可以将其推广到多维数组。本节代码中,不包含数组的更多内容,主要使用了“或”运算符(||)和isNaN ()方法。
第4章 数值处理对象 45
4.1 求平方根 45
  本节给出一段求平方根的示例代码,可以实现对整数、负数进行求平方根。并且,当用户输入的内容不是数值时,还可以进行验证。主要使用Math对象的sqrt(n)和abs(n)方法。
4.2 求质数 47
  本节给出一段求质数的方法,可以求出用户输入数值以内的所有质数。当用户输入的值较小或输入非数值时,可以进行验证。本节使用筛选法求质数,主要使用NaN这一特殊的数值、isNaN()方法和Math对象的sqrt(n)方法。
4.3 简单数制转换 50
  本节给出一段数制转换的示例代码,可以实现JavaScript中任意数制之间的转换。主要使用JavaScript中数制与数制转换的相关方法。
4.4 数制转换函数 53
  本节给出一段数制转换函数的示例代码,可以实现将0~255之间的十进制数转换为十六进制表示。
4.5 实现计算器 54
  本节给出一段可实现四则运算的计算器的示例代码,可以实现基本的算术四则运算。主要使用字符串连接的相关方法。
第5章 日期时间应用 59
5.1 带开关的时钟 59
  本节实例给出一个带开关的时钟的实现方法。通过按钮,用户可以控制时钟的显示与隐藏。主要使用Window对象的setTimeout()方法和clearTimeout()方法。
5.2 不同风格的时间显示 61
  同样是文本时钟,也可以有多种不同的显示方式。本节实例给出了文本时钟的6种不同显示方式。读者可根据自己需求,选择合适的样式使用。主要使用Date对象的getYear方法、getMonth方法、getDate方法、getDay方法、getHours方法、getMinutes方法、getSeconds方法。
5.3 倒计时效果 64
  本节实例给出一个倒计时效果的实现方法。可以根据预先设定的时间进行以秒为单位的倒计时显示。主要使用Date构造函数和Math对象的floor(n)方法。
5.4 模拟时钟 66
  本节实例给出一个模拟时钟的实现方法。由一幅画有时钟刻度的图片做表盘,时钟在表盘上走动。主要使用Date对象的getYear方法、getMonth方法、getDate方法、getDay方法、getHours方法、getMinutes方法、getSeconds方法,以及Math对象的floor(n)方法和random()方法等。
5.5 显示农历日期 70
  本节实例给出一个显示农历日期的实现方法。页面中,除显示当前的公历日期及星期外,还显示当前的农历日期。主要使用数组与字符串的定义、元素遍历与引用、length属性等。
5.6 温度计样式时钟 74
  本节实例给出一个温度计样式时钟的实现方法。分别使用3个水平条来表示时、分、秒,本例中的时钟是活动的。主要使用Date对象的getHours方法、getMinutes方法、getSeconds方法和“?:”运算符。
5.7 位置固定的时钟 79
  本节实例给出一个位置固定的时钟的实现方法。无论如何调整窗口的大小,该时钟时钟位于当前窗口的右下角。主要使用Date对象的getHours方法、getMinutes方法、getSeconds方法和Math.PI属性、Math.sin()方法、Math.cos()方法,以及String对象的split方法。
第2部分 事件处理
第6章 事件绑定与事件触发 87
6.1 HTML事件绑定 87
  HTML支持对绝大多数元素进行事件绑定,这些绑定通常作为元素的属性使用,例如onclick与onmouseover,可以使用等号与JavaScript进行连接。当与之绑定的对象有事件发生时,就会执行相应的JavaScript代码。本节实例实现了HTML事件绑定。
6.2 非标准事件绑定 91
  在web页面中,事件的绑定可以由多种方式实现,本节实例给出了非标准事件绑定的实现方法。主要使用IE中的非标准事件绑定。
6.3 事件处理器绑定 93
  在事件处理过程中,可以直接将事件绑定到事件处理器。本节实例给出了直接将事件绑定到事件处理器的一个示例。
6.4 使用函数 94
  使用JavaScript同样可以绑定事件处理器。尤其对于较为复杂的事件,通常使用JavaScript函数完成,然后通过表单的某些事件调用该函数。本节实例给出了一个使用函数的示例。
6.5 直接在表单上调用事件 96
  本节实例给出了在表单上直接调用事件的方法,同时使用单独的JavaScript语句自动调用事件。
第7章 DOM中的事件处理 99
7.1 事件流 99
  本节给出一段DOM事件流的示例代码,可以显示事件流的实现过程,同时,还显示完成该事件流所使用的JavaScript代码。主要使用innerHTML 属性、HTML的 pre 标签、HTML字符实体等内容。
7.2 DOM2鼠标事件 102
  本节给出一段DOM2 鼠标事件的示例代码,可以实现对鼠标单击事件的捕获,同时,还能对键盘功能键的变化进行识别。主要使用Event对象及其附加属性。
7.3 取消默认动作 105
  本节给出一段取消默认动作的示例代码,超级链接的不会跳转,但其单击事件仍然会被激活。主要使用Event对象的preventDefault方法和Window对象的document.get ElementById()方法。
7.4 创建DOM2事件 107
  本节给出一段创建DOM2事件的示例代码,可以检测鼠标位置,还可对当前节点及其双亲节点与兄弟节点进行判断。主要使用document.createEvent()创建人工事件。
第8章 事件处理应用 111
8.1 页面预览 111
  在Web页面中,可以在打开一个链接页面前对该页面进行预览。本节实例给出一种页面预览的实现方法。使用了onMouseOver事件和src属性。
8.2 图像切换 114
  本节实例给出一个图像切换的方法,当鼠标移动到某个图像时,该图像会切换为另一幅图像;当鼠标离开该图像后,又换会原来的图像。主要使用onMouseOver事件、onMouseOut事件和HTML中 img 标签src属性。
8.3 点亮文本 115
  当鼠标移动到某段文字时,可以对该段文字进行放大或缩小,以增强显示效果。本节给出对文字进行放大显示的实例。主要使用了onMouseOver和onMouseOut事件,以及style.color属性和style.fontsize属性。
8.4 鼠标跟随 119
  本节给出一幅gif动画图像,当鼠标移动时,该图像会随鼠标移动。移动过程中,该gif动画仍将继续活动。
8.5 鼠标感应 122
  鼠标的移动也可以触发一定的事件发生。本节实例给出一个对鼠标移动进行感应的例子,完成显示图像和图像清晰度变化的动作。
8.6 禁用鼠标按键 124
  为了防止网页内容被复制,网上经常可以遇到禁用鼠标右键的网页。本节实例给出一个禁用鼠标左键和右键的示例,不论单击鼠标的哪个按键,都将执行预定的操作。主要使用了onmousedown事件和event.button属性。
第3部分 文字处理
第9章 文字移动 129
9.1 文字的垂直滚动 129
  本节给出一段文字垂直滚动的示例代码,页面中,一段文字自下而上逐字滚动显示。在实际应用中,也可去掉文字周围可显示的边框。
9.2 文字的渐隐渐显 132
  本节给出一段文字渐隐渐显的示例代码,文字颜色逐渐由深变浅,随后又由浅变深,给人渐隐渐显的效果。主要使用了子字符串截取方法substring()和浏览器版本检测navigator.appVersion。
9.3 文字的闪烁显示 134
  本节给出一段文字闪烁显示的示例代码,窗口中的文字在两种不同状态间不停转换,给人闪烁的感觉。主要使用了CSS中设置文字滤镜效果的方法。
9.4 文字的随意拖动 136
  本节给出一段文字随意拖动的示例代码,页面中的一行文字作为一个整体,可以使用鼠标,将该段文字在页面窗口中随意拖动。主要使用了Style对象的pixelTop属性和pixelLeft属性。
9.5 文字的坠落显示 138
  本节给出一段文字坠落显示的示例代码,单击“开始显示”按钮后,文字逐个从上一行坠落到下一行。主要使用了子字符串截取方法substring()。
9.6 页面内飘动的文字 140
  本节给出一段文字在页面内飘动的示例代码,可以实现一行文字在页面内规则飘动的显示效果。主要使用了Math对象的floor()方法和String对象的length属性。
9.7 漫天飞舞的文字 145
  本节给出一段文字漫天飞舞的示例代码,文字从页面中心位置喷涌而出,随后在页面飞舞,持续不断。主要使用了Math对象的sin(n)和cos(n)方法。
9.8 文字下落效果 149
  本节给出一段实现文字下落效果的示例代码,文字从浏览器顶端依次落下,落在浏览器窗口中的固定位置,最后排成一排。
第10章 文字色彩与形状 155
10.1 霓虹灯文字 155
  本节给出一段实现霓虹灯效果文字的示例代码,页面中的文字自左至右逐个先变红再变蓝,给人霓虹灯的感觉。主要使用了Navigator对象的appName属性、String对象的charAt()方法和length属性。
10.2 色彩渐变 158
  本节给出一段实现文字色彩渐变的示例代码,一行文本中的字符颜色由深变浅,再由浅变深。主要使用了String对象的substr方法和substring方法。
10.3 文字的渐大渐小 160
  本节给出一段文字渐大渐小显示的示例代码,在同一行中,文本逐渐由小变大,再由大变小,如此反复。主要使用了String对象的substring方法和length属性。
10.4 文字大小动态变化 162
  本节给出一段文字大小动态变化的示例代码,单行文本中的字符自左至右依次由大变小再变大。主要使用了String对象的substring方法和Math对象的sin(n)方法和abs(n)方法。
10.5 文字变色显示 164
  本节给出一段文字变色显示的示例代码,页面自左至右滚动显示文本,滚动过程中,文本中各文字的颜色不断变化。主要使用了String对象的substring方法、length属性和innerHTML属性。
10.6 打字效果显示 167
  本节给出一段打字效果显示文字的示例代码,页面出现类似打字显示的文本,显示过程中,各文字的颜色不断变化。主要使用了String对象的charAt()方法和slice()方法。
第11章 文字显示 171
11.1 随机显示 171
  本节实例给出随机显示文字的实现方法。当用户刷新页面时,会显示不同的文字。应用在网页中,可以实现随机提示和提醒,或者随页面的刷新显示不同的警句和格言等。主要使用了new运算符以及Math对象的floor(n)方法和random()方法。
11.2 打字效果 173
  本节实例实现页面文字的打字输出效果。当载入页面时,预先设定的文字就会以打字效果逐个输出。每个字符输出完毕,其后都紧跟一个光标符号。主要用到数组元素的引用,String对象的substring ()方法,Window对象的setTimeout()方法,以及字符串的length属性。
11.3 UBB代码实例 176
  本节实例给出一个通用的UBB代码实例。读者可以只简单修改网页元素的布局,就可以直接应用在自己的网页中。本节代码虽长,但应用的内容不多。主要包括:字符串的连接操作、逻辑值直接作为判断条件、多种HTML标签的JavaScript输出。
11.4 从右至左排列的文字 188
  有些文字,例如阿拉伯文、希伯来文等,文字是从右至左排列的,本节实例给出实现从右至左排列文字效果的方法。在实例中,读者可以看到不同的“右-左”效果。既可用于制作外文网站,又可用于中文网页,增强显示效果。主要用到字符串以及HTML的 bdo 标签和“dir='rtl'”属性。
11.5 古汉语文字排版 190
  古汉语的书写习惯是:文字“上-下”排列,段落“右-左”排列。本节实例实现古汉语文字的这种排版方式。使用这种方式,可以作出古色古香的Web页面。主要使用了JavaScript的数组以及HTML的“ pre ”标签和“writing-mode:tb-rl;”属性。
11.6 从上到下、从左到右排列的文字排版 192
  有的文字是自上而下书写,下一列文字书写在前一列文字的右侧,与古汉语的书写习惯正好相反。这种排版,用高级语言中实现比较容易,但在Web页面中有一定难度。本节实例实现了这种排版,希望对有兴趣的读者起到一定的帮助作用。
第4部分 页面与表格
第12章 文档处理 199
12.1 文档颜色设置 199
  本节允许用户修改页面背景、文字、超级链接等元素的颜色值。主要使用了与文档颜色有关的Document属性、with语句等。
12.2 上次修改时间 202
  网页设计中,出于某些应用上的需求,经常会用到“文档上次修改时间”的信息。本节给出一个相关的实例。主要使用了Document对象的lastModified属性。
12.3 DOM 1中的文档属性与聚集 204
  本节给出一个DOM 1中文档属性与聚集应用的示例,允许用户向页面中添加预定的HTML元素或内容。主要使用了createElement()方法和document.getElementsByName()方法。
12.4 访问HTML元素属性 207
  本节给出一段访问HTML元素属性的示例代码,可以实现对文本对齐方式的动态改变。
第13章 页面处理 209
13.1 按位置访问元素 209
  本节给出一段按位置访问页面元素的示例代码,可以实现对页面表单元素及其内容的动态读取。
13.2 按名称访问元素 211
  本节给出一段按名称访问页面元素的示例代码,可以实现对页面表单元素及其内容的动态读取。
13.3 动态修改元素内容 214
  本节给出一段动态修改页面元素内容的示例代码,可以实现对页面元素内容的动态修改和显示。
13.4 改变 div 的内容 216
  本节给出一段动态改变页面 div 内容的示例代码,可以通过对用户选择的响应,在 div 中动态显示不同的内容。
13.5 改变页面样式 218
  本节给出一段动态改变页面样式的示例代码,通过对用户不同选择的响应,动态改变页面元素的排列样式。主要使用了with语句。
第14章 DOM中的节点操作 223
14.1 节点插入与追加 223
  本节给出一段节点插入与追加的示例代码,可以实现在页面中某节点前或节点后插入新的节点。主要使用了Node(节点)对象的insertBefore(newChild,referenceChild)方法和appendChild(newChild)方法。
14.2 节点复制 226
  本节给出一段节点复制的示例代码,可以实现对节点的复制和深度复制。主要使用了节点的复制和深度复制两个概念。
14.3 节点删除与替换 228
  本节给出一段节点删除与替换的示例代码,可以实现对文档中指定节点进行替换或删除等操作。主要使用了Node对象的removeChild(child)方法和replaceChild(newChild, oldChild)方法。
14.4 修改节点内容 230
  本节给出一段修改节点内容的示例代码,可以实现对文档中的节点进行插入、删除、替换、修改等多种操作。
第15章 表格处理 233
15.1 HTML中的表格 233
  本节给出一段HTML中的表格的示例代码,几乎用到了HTML表格的各种常见属性。本节代码并不涉及JavaScript代码,但对于后面几节的深入介绍是有帮助的。
15.2 设置表格属性 236
  本节给出一段设置表格属性的示例代码,可以实现对表格对齐方式、背景色、边框粗细、边框显隐、内外边距等属性的动态设置。
15.3 操作表格元素 239
  本节给出一段操作表格元素的示例代码,可以实现对表格元素的任意删除,还可以在表格中添加行。
15.4 操作表元 243
  本节给出一段操作表元的示例代码,除完成对表格行、列的删除和插入操作外,还可以向表格的单元格中添加相应的内容。除使用了操作表格元素的相关方法外,主要使用了表元操作的方法。
第5部分 表单与窗口
第16章 简单的表单验证 251
16.1 验证输入内容是否为空 251
  在Web页面中,经常需要验证用户是否进行了输入。本节给出一个验证输入内容是否为空的实例,当用户未进行输入或输入为空时,将给出提示信息。主要使用了null、“==”和“||”运算符、转义字符等内容。
16.2 验证E-mail地址 253
  E-mail地址包含特定的字符“@”和“.”,并且“@”出现在“.”之前。本节给出一个验证E-mail地址是否有效的实例。主要使用了字符串对象的charAt()方法、length()方法、indexOf()方法、lastIndexOf()方法。
16.3 电话号码检测 256
  电话号码由数字0~9、左右括号“(”和“)”、加号“+”和减号“-”等组成,本节给出一个电话号码检测的实例。主要使用了字符串对象的charAt()方法、length属性、indexOf()方法。
第17章 表单验证高级应用 259
17.1 混合表单验证 259
  在实际应用中,经常综合多种不同的表单进行验证,例如:输入是否为空、输入是否数字、密码是否太长或太短等。本节给出一个混合表单验证的实例。主要使用了正则表达式进行数据格式的验证、字符串对象的length属性、非运算符“!”。
17.2 onchange事件 263
  要验证一个表单域,不必等到表单提交后再进行。在用户改变其内容后,通过使用onchange事件处理器,可立即对域进行验证。本节给出一个应用onchange事件的示例。
17.3 按键屏蔽 264
  在实际应用中,往往需要屏蔽用户的部分输入。例如,在应当输入数字的位置,只接收数字的输入,对其他内容的输入,则进行屏蔽。本节给出一个按键屏蔽的实例。主要使用了onkeypress事件。
第18章 打开与关闭窗口 269
18.1 打开窗口 269
  打开新的浏览器窗口的方法很多,本节给出一个打开新窗口的实例,实现了用4种不同的方法打开新的窗口。主要使用了Window对象的open()方法、 body 标签的onload属性,以及HTML中的无序列表。
18.2 关闭窗口 271
  本节给出一个关闭窗口的实例,不仅可以将已打开的窗口关闭,还可对新窗口的各种不同状态进行检测。主要使用了Window对象的close()方法和closed属性。
18.3 窗口写入 273
  本节给出一段窗口写入的示例代码,可以打开一个新的窗口,在其中显示一些预先写入的内容。主要使用了Window对象的document.writeln()方法。
18.4 窗口交互 275
  在上一节的基础上,本节给出一个窗口交互的实例,可以随时手动向新窗口中添加新的内容。主要使用了DOM窗口写入的方法和Window对象的focus()方法。
18.5 提示与警告对话框 277
  对话框是响应用户某种需求而弹出的小窗口,本节给出常见对话框使用的示例。主要使用了警告对话框、确认对话框和提示对话框。
第19章 窗口控制 281
19.1 窗口移动 281
  本节给出一段窗口移动的示例代码,可以实现移动窗口在屏幕上位置的改变。位置改变时,既可以逐渐位移,也可一步到位。主要使用了window.moveBy()方法和window.moveTo()方法。
19.2 改变大小 284
  本节给出一段改变窗口大小的示例代码,可以实现对窗口大小进行调整。调整大小时,既可以逐渐改变,也可一步到位。主要使用了window.resizeBy()方法和window. resizeTo()方法。
19.3 窗口滚动 287
  窗口滚动指的是对窗口滚动条的滚动。本节给出一段窗口滚动的示例代码,可以实现对窗口水平滚动条和垂直滚动条的控制。窗口滚动时,既可以逐渐改变,也可一步到位。主要使用了window.scrollBy()方法和window.scrollTo()方法。
19.4 设置超时 290
  可以设置一个窗口在某段时间后执行何种操作,称为设置超时。本节给出一个设置超时的实例,可以在一定时间后关闭浏览器,也可取消超时设置。主要使用了Window对象的setTimeout()方法和clearTimeout()方法。
19.5 窗口事件 291
  Window对象支持很多事件,但是绝大多数不是通用的。本节给出一个窗口事件的代码实例,介绍通用窗口事件的用法。
19.6 IE窗口扩展 293
  IE支持一些特殊类型的窗口。本节实例给出模式窗口、无模式窗口与弹出窗口的使用。同时还能够对弹出窗口进行关闭或隐藏。
第20章 框架操作 297
20.1 访问框架 297
  本节给出一个访问框架的实例。框架采用了多级嵌套形式,以便使读者更好地理解框架的命名与引用。主要使用了框架命名与引用的相关方法。
20.2 内联框架 300
  内联框架又称嵌入式框架,是框架和页面内容混排的一种方式。本节给出一个嵌入式框架的实例。主要使用了嵌入式框架命名与引用的相关方法。
20.3 框架间的交叉通信 302
  在不同框架之间进行交叉通信,是框架的高级应用。本节给出一段框架间交叉通信的示例代码,在一个框架中的运算,其结果将显示在另一个框架中。主要使用了框架之间的交叉引用方法。
20.4 嵌套框架交叉通信 304
  本节给出一段求平方根的示例代码,可以实现对整数、负数进行求平方根。并且,当用户输入的内容不是数值时,还可以进行验证。主要使用了Frame对象的相关属性。
第6部分 图像与视频
第21章 图像显示 311
21.1 图片的随机显示 311
  本节给出一段图片的随机显示的示例代码。页面出现一幅图像,不断刷新页面,则页面中的图像不断变化。主要使用了Math对象的random()方法和round()方法。
21.2 图像显隐 313
  本节给出一段图像显示和隐藏的示例代码,程序中出现一幅图像,不断刷新页面,页面中的图像不断显隐交替变化。主要使用了setTimeout()方法、clearTimeout()方法、innerHtml属性、length属性和CSS滤镜的alpha属性。
21.3 图像滚动显示 316
  本节给出一段图像滚动显示的示例代码,页面出现两组图像,两组图像分别沿水平方向和垂直方向滚动显示。主要使用了setTimeout()方法、onmouseover事件与onmouseout事件、Math对象的floor(n)方法、sin(n)方法、cos(n)方法、ceil(n)方法、random()方法,以及和网页元素坐标位置及尺寸等应用。
21.4 探照灯扫描 323
  本节给出一段探照灯扫描显示图像的示例代码,页面出现一幅图像,图像上有光圈左右晃动,如同探照灯。主要使用了String对象的length属性和CSS滤镜中light的相关属性。
21.5 多幅图像翻页显示 326
  本节给出一段多幅图像翻页显示的示例代码,页面出现几幅图像,右边的图像以翻书的效果依次转到左边显示。主要使用了Window对象的setTimeout()方法和clearTimeout()方法、Location对象、onmouseover事件和onmouseout事件、Math对象的PI属性、sin(n)方法、cos(n)方法、round(n)方法和abs(n)方法。
21.6 水纹效果显示 331
  本节给出一段水纹效果显示图像的示例代码,页面内交替出现多幅图像。图像转换过程中,出现类似水纹的效果。主要使用了Window对象的setTimeout()方法和clearTimeout()方法、 innerHtml属性、CSS滤镜中wave的相关属性。
21.7 全景图效果 335
  本节给出一段全景图效果显示图像的示例代码,页面出现一个表格框,其中显示多幅图像,每幅图像都自右至左滚动,且都以全景图形式显示。主要使用了Marquee对象的相关属性与方法。
21.8 手电效果 337
  本节给出一段手电效果显示图像的示例代码,页面出现一幅较暗的图像,鼠标在图像上移动时,所到之处都会变亮,而离开后又会变暗。主要使用了CSS中的cursor属性、CSS滤镜中light的相关属性。
21.9 雷达显示效果 340
  本节给出一段图像雷达显示效果的示例代码,自图像中心为圆心的一个扇形按顺时针滑过图像,所到之处,图像变亮,离开后又变暗。主要使用了document对象的cookie属性、String对象的split()方法、length属性、substring()方法、indexOf()方法。
第22章 图像运动与事件 345
22.1 图像拖动 345
  本节给出一段图像拖动的示例代码,运行该程序后,页面出现两幅图像,使用鼠标拖动其中的一幅图像,可以将其在窗口中拖动。主要使用了onmouseMove事件和event.button属性。
22.2 按钮控制 347
  本节给出一段按钮控制图像的示例代码。运行该程序后,页面出现两幅图像,使用鼠标拖动其中的一幅图像,可以将其在窗口中拖动。主要使用了onclick事件和image对象的src属性。
22.3 感应鼠标 348
  本节给出一段感应鼠标的示例代码,当鼠标移动到图像上时,图像发生变化;当鼠标离开图像时,图像再次发生变化。主要使用了onmouseover事件和onmouseout事件。
22.4 花环效果 350
  本节给出一段花环效果的示例代码。运行该程序后,页面出现一个转动的花环,该花环一边转动,一边在页面内漂移。主要使用了Math对象的sin(n)方法和cos(n)方法、Style对象的glow属性、Window对象的setTimeout()方法。
22.5 流星效果 354
  本节给出一段流星效果的示例代码,运行该程序后,除页面显示的静态内容外,还有流星不断从浏览器窗口四周飞进。主要使用了Math对象的random()方法和round()方法、Style对象的glow属性、网页元素坐标位置及尺寸等应用。
22.6 图像运动 359
  本节给出一段带阴影运动的图像的示例代码,运行该程序后,页面出现一幅图像,使用鼠标单击该图像,图像将会拖着阴影在页面内滑动。主要使用了Window对象的setTimeout()方法、Math对象的min()方法、Style对象的alpha属性。
22.7 图像显示 366
  本节给出一段带链接的图像的示例代码,运行该程序后,页面出现一个超级链接,单击该链接,页面会出现一幅图像,并且,该图像还带有超级链接。主要使用了Window对象的setTimeout()方法、和document.all属性。
22.8 图像飞行一 368
  本节给出一段图像飞行的示例代码,运行该程序后,页面出现一幅图像,该图像分为一片一片,自右至左从屏幕外飞翔而至,最终组合为完整的图像。主要使用了Window对象的setTimeout()方法和clearTimeout()方法、style对象的visibility属性。
22.9 图像飞行二 371
  本节给出另一段图像飞行的示例代码,运行该程序后,页面出现一幅图像,该图像分为一块一块,从窗口右侧和底部飞翔而至,最终组合为完整的图像。主要使用了Math对象的floor(n)方法、random()方法、ceil(n)方法、innerHTML属性。
第23章 背景效果 377
23.1 随机更换页面背景 377
  本节给出一段随机更换页面背景的示例代码,当用户每次刷新页面时,都会出现与前一次不同的页面背景。主要使用了Math对象的random()方法和floor()方法。
23.2 用户自选背景之一 379
  本节给出一段用户自选背景色的示例代码,当鼠标指向页面中的色块时,页面背景随之变为色块所指示的颜色。主要使用了onmouseover事件、document.bgColor属性、作为属性值使用的JavaScript。
23.3 用户自选背景之二 382
  本节给出另外一段用户自选背景的示例代码,单击页面中的任意一个色块,页面背景即变为色块所示的颜色,同时弹出一个对话框,提示当前的页面背景色。主要使用了数组的定义与引用和转义字符。
23.4 用户自选背景之三 385
  本节给出另一段用户自选背景的示例代码,当用户鼠标在页面显示的数值上移动时,页面背景会随鼠标移动而不断变化。主要使用了数组的length属性和使用构造函数创建数组的方法。
23.5 页面背景的闪电效果 387
  本节给出一段闪电效果页面背景的示例代码,单击“开始”按钮,页面在黑白之间连续闪烁,呈现闪电效果。主要使用了Window对象的setTimeout()方法。
第24章 视频动画 391
24.1 有图像的Media Player 391
  本节给出一个使用Media Player的示例程序,同时打开两个Windows媒体文件,其中一个包含视频,一个不包含视频,两个文件都显示播放器窗口界面。
24.2 无图像的Media Player 393
  本节给出一个使用Media Player的示例程序,同时打开两个Windows媒体文件,其中一个包含视频,一个不包含视频,两个文件都不显示播放器窗口界面。
24.3 有图像的Real Player 396
  本节给出一个使用Real Player的示例程序,打开一个包含视频的Real媒体文件,播放过程中显示播放窗口界面。
24.4 无图像的Real Player 398
  本节给出一个使用Real Player的示例程序,打开一个不包含视频的Real媒体文件,播放过程中不显示播放窗口界面。
24.5 播放Flash文件 399
  本节给出一个播放Flash文件的示例程序。除正常显示Flash播放界面外,还建立了几个按钮,可以对该文件的播放进行控制。
第25章 广告效果 403
25.1 位置固定的对联广告 403
  本节给出一个位置固定的对联广告,广告图片总是停留在页面的固定位置,不随页面的滚动而改变。主要使用了Style对象的visibility属性和网页元素坐标位置及尺寸等应用。
25.2 随页面滚动的对联广告 406
  本节给出一段随页面滚动的对联广告示例代码,运行该程序后,页面两侧各出现一幅带链接的图片,拉动滚动条时,图片会随页面一起滚动。主要使用了document.getElementById(id)方法、Math.ceil()方法、Math.abs()方法和网页元素坐标位置及尺寸等应用。
25.3 全屏飘动的广告 409
  本节给出一段全屏飘动的广告示例代码,运行该程序后,屏幕上出现一幅飘动的图像,图像不局限在浏览器窗口内,而是在整个屏幕上飘动。主要使用了Window对象的setTimeout()方法和clearTimeout()方法、Location对象、onmouseover事件和onmouseout事件。
25.4 循环滚动的多幅广告 413
  本节给出一段循环滚动的多幅广告示例代码,运行该程序后,页面出现一系列图片自右至左循环滚动。主要使用了innerHTML属性、onmouseover事件和onmouseout事件、网页元素坐标位置及尺寸等应用。
25.5 漂浮3D广告 416
  本节实例给出一个漂浮3D广告的实现方法。随着3D饼图的飘动,其上的图片也会不断切换,且每幅图片都带有特定的超级链接。主要使用了document.getElementById(id)方法、Math对象的ceil()方法、abs()方法、random()方法和floor()方法、Window对象的setTimeout()方法和clearTimeout()方法。
第7部分 菜单应用
第26章 基本菜单的设计 427
26.1 基本的下拉菜单 427
  本节实例给出基本的下拉菜单的实现方法。用户可以在下拉列表中选择一个链接,单击该链接后,将跳转至相应的链接页面。主要使用了Document对象中一些文档定位的属性。
26.2 改进的下拉菜单 429
  本节实例同样实现了一个下拉菜单,但与上节实例有所不同。在下拉列表中对可选项进行了分类,因此,处理的方式也会不同。主要使用了onchange事件和window.location属性。
26.3 渐显的下拉菜单 431
  本节实例给出一个渐显的下拉菜单的实现方法。当用户单击菜单链接时,会弹出下拉菜单,菜单逐渐由模糊变清晰,实现渐显的效果。
第27章 DHTML菜单 437
27.1 折叠菜单 437
  本节实例给出一个折叠式下拉菜单的实现方法。用户单击菜单项时,会显示其下一级菜单。当用户单击其他菜单项时,原先的菜单项收回,再显示其他子菜单项。主要使用了onmouseover事件和onmouseout事件。
27.2 远程菜单 440
  本节实例给出一个远程菜单的示例程序。控制菜单和被控对象分处不同窗口之中,但仍可控制窗口内容。主要使用了new运算符以及Math对象的floor(n)方法和random()方法。
27.3 弹出菜单 442
  本节实例给出一个左键弹出菜单的示例程序。当用户在页面窗口内单击鼠标时,会在单击处弹出一个菜单。主要使用了Event对象的相关属性。
第28章 特效样式菜单 445
28.1 旋转导航菜单 445
  本节实例给出一个旋转导航菜单的实现方法。运行该程序后,页面出现一圈旋转的文字链接,这些链接组成页面的菜单。主要使用了document.getElementsByTagName()方法、setTimeout()方法和style对象的visibility属性。
28.2 隐藏滑动菜单 453
  本节实例给出一个隐藏滑动菜单的实现方法。页面打开后,菜单是隐藏的,将鼠标移动到页面左边的“隐藏菜单”,就会显示一个导航菜单。主要使用了onmouseover事件、onmouseout事件和document.all属性。
28.3 仿QQ菜单 457
  本节实例给出一个仿QQ样式菜单的实现方法。页面打开后,出现一个收缩的二级菜单,单击一级菜单中的任何一个链接,会出现下一级菜单。主要使用了parseInt()方法和setTimeout()方法。
28.4 触发型导航菜单 462
  本节实例给出一个触发型导航菜单的实现方法。单击菜单栏中的任何一个链接,会显示该链接对应的内容。主要使用了String对象的length属性和Style对象的display属性。
28.5 下拉列表菜单 465
  本节实例给出一个下拉列表菜单的实现方法。当用户单击菜单栏中的任何一个链接时,会出现该级菜单的下一级菜单。主要使用了document.getElementById()方法以及style.visibility属性。
28.6 树型导航菜单 469
  本节实例给出一个下拉列表菜单的实现方法。当用户单击菜单栏中的任何一个链接时,会出现该级菜单的下一级菜单。主要使用了Style对象的visibility属性和display属性。
28.7 变色标题菜单 473
  本节实例给出一个下拉列表菜单的实现方法。当用户单击菜单栏中的任何一个链接时,会出现该级菜单的下一级菜单。主要使用了getElementsByTagName()方法、Style对象的background属性、border属性和color属性,以及onmouseover事件和onmouseout事件。
第8部分 样式、性能与安全
第29章 网页样式与元素定位 479
29.1 获取文本框中的内容 479
  本节实例给出一个使用DHML获取网页文本框中输入内容的实现方法。当用户单击“确定”按钮后,会弹出一个对话框,显示文本框中的内容。
29.2 显示和修改文字内容(DHTML) 481
  本节实例给出一种使用DHTML对象模型方法显示和修改文字内容的实现方法。当用户单击“显示”按钮时,可以显示相应文字的内容,当用户单击“改变”按钮时,可以改变相应文字的内容。
29.3 处理网页表格内容(DHTML) 483
  本节给出一段使用DHTML对象模型方法处理网页中的表格内容的示例代码。用户可以随意添加或删除表格内容。
29.4 显示和修改网页内容(W3C) 485
  本节实例给出一种使用W3C对象模型方法显示和修改文字内容的实现方法。当用户单击“显示”按钮时,可以显示相应文字的内容,当用户单击“改变”按钮时,可以改变相应文字的内容。
29.5 处理网页表格内容(W3C) 488
  本节给出一段使用了W3C对象模型方法处理网页中的表格内容的示例代码。用户可以随意添加或删除表格内容。
29.6 综合应用 491
  本节给出一段样式与定位综合应用的示例代码。用户可以任意改变网页中元素的位置、大小、层次、可见度、内容等。
第30章 浏览器与性能检测 499
30.1 显示浏览器名称与版本 499
  使用JavaScript还可以显示用户浏览器名称、版本号及其他信息。本节给出一个相关的实例。
30.2 JavaScript检测 501
  可以对浏览器是否支持JavaScript、支持何种版本的JavaScript进行检测,以便在编写代码时采取相应的措施。本节实例给出这样的一个应用。主要使用了 noscript   /noscript 标签和JavaScript版本检测。
30.3 获取浏览器窗口大小 503
  本节实例给出一个获取浏览器当前窗口大小的方法。当浏览器窗口大小变化时,显示的值会随时变化。
30.4 设置屏幕对象的尺寸 506
  使用JavaScript可以调整屏幕对象的尺寸,本节实例中,给出一段文字,其大小可随窗口尺寸变化而变化。
30.5 有选择地显示图片 508
  在网页设计中,应该考虑到用户屏幕分辨率较低或网速较慢的情况,根据不同情况显示不同的媒体文件,以免给用户浏览页面造成不必要的麻烦。本节实例中,可以根据用户屏幕分辨率显示不同大小的图片。
30.6 简单的性能检测 510
  本节给出一段求平方根的示例代码,可以实现对整数、负数进行求平方根。并且,当用户输入的内容不是数值时,还可以进行验证。
30.7 模拟浏览器菜单 512
  本节给出一段模拟浏览器菜单的示例代码,可以通过在页面中设置按钮,起到浏览器窗口按钮的作用。
第31章 加密算法 515
31.1 实现md5加密 515
  md5加密是目前国内网页设计中使用最多的口令加密方式,本节给出一段示例代码,可以实现输入内容的md5加密。主要使用了位运算和位移运算。
31.2 编制自己的加密算法 522
  在实际应用中,有时候需要自己编制加密算法,本节给出一段编制自己的加密算法的示例代码,以供读者参考。本节代码用到的知识点较少,主要使用了Window对象包含的Location对象。
第32章 恶意网页 527
32.1 字符串翻倍 527
  “字符串翻倍”方法,会使字符串长度成指数增长,可以在短短数秒内造成大多数浏览器崩溃。本节介绍一个构造“字符串翻倍”的实例。
32.2 函数循环交叉调用 529
  在程序设计中,有时需要函数的交叉调用。但如果使用不当,会造成调用无法中止,系统资源耗尽。本节代码给出一个函数交叉循环调用的示例。
32.3 无限递归调用 531
  递归是程序设计中经常使用的方法,但如果未设置中止条件,递归将永远执行下去,直至将系统资源耗尽。本节代码给出了一个实现无限递归调用的例子。
32.4 构造无限数组 532
  另一种造成系统资源耗尽的方法是构造无限数组。通过为该数组赋值或输出其元素值达到消耗资源的目的。本节实例给出了一种构造无限数组的方法。主要使用了Number对象的POSITIVE_INFINITY属性。
32.5 载入超大图像 534
  当浏览器试图载入一幅非常大的图像时,也会受到运算速度、内存容量等因素的制约,有可能造成系统资源耗尽。本节给出一个载入超大图像的实例代码。主要使用了“++”和“+=”运算符。
32.6 关不掉的对话框 536
  如果网页总是弹出对话框,却无论如何也无法关闭,也是很烦人的事情。本节给出一段关不掉的对话框的实例代码。
32.7 一直弹出新窗口 538
  恶意网页的特征之一是不停打开新的窗口,直至将用户的系统资源耗尽。本节给出了一个一直弹出新窗口的实例。
第9部分 XML与Ajax
第33章 XML读取与处理 543
33.1 使用IE处理XML 543
  本节给出一段使用IE处理XML文档的代码,代码中,可以对XML文档内容进行读取、显示、添加和删除等操作。
33.2 使用Mozilla处理XML 548
  本节给出一段使用Mozilla Firefox处理XML文档的代码,代码中,可以对XML文档内容进行读取、显示、添加和删除等操作。
33.3 XML文件内容分页显示 553
  对于较长的XML文档,在同一页内显示会不方便。本节给出一段使用XML文件内容分页显示的代码,在显示XML文件内容的同时,实现了分页显示,可以在页面中进行翻页。
第34章 IE XML数据岛 561
34.1 格式化输出 561
  通过使用数据岛,可以将XML文档在HTML中调用并进行格式化输出。本节代码给出了一个使用IE XML数据岛对XML文档进行格式化输出的示例。
34.2 动态增删记录 564
  除对XML文档进行格式化输出之外,使用IE XML数据岛还可以对XML文档记录进行动态增删,本节给出一个动态增删记录的实例。在程序中,所有的添加、删除操作,都是在文本区层面上进行的,不对XML文档本身进行任何写操作。
第35章 Ajax基础 569
35.1 读取XML文档 569
  本节给出一段使用Ajax读取XML文档的代码,可以实现对XML文档内容的读取与输出。主要使用了XmlHttp对象的open()方法、send()方法、onreadystatechange属性、responseXML属性。
35.2 实现联动选择 573
  本节给出一段使用Ajax实现联动选择的示例代码。输入邮政编码后,使用Tab键进行跳格,此时,所在城市和所在省份两个文本框中会自动出现相应的内容。
35.3 实现菜单特效 576
  本节给出一段使用Ajax实现菜单特效的示例代码。程序运行后,页面出现一个水平排列的菜单和一个垂直排列的菜单,鼠标移动至子菜单项目后,该子菜单项会被方框框住。
第36章 Ajax应用 585
36.1 实现简单相册 585
  本节使用PHP环境,给出一段实现简单相册的实例代码。程序运行后,可以看到图像的缩略图,单击缩略图,可以浏览图像。不论是缩略图还是原始图像,在显示过程中,都可以进行前后的翻页操作。
36.2 实现文本聊天室 606
  本节给出一段实现文本聊天的示例代码。除基本的聊天功能外,还需要维护一个已登录用户的列表,如果session已过期,则将用户从列表中去除过期的用户。另外,程序还支持清除聊天室和改变用户昵称等功能。
附录 JavaScript简介 635

 


4.PHP 5与MySQL 5 Web开发技术详解(含光盘1张)

作译者: 杜江编著
ISBN号: 978-7-121-04984-2
出版日期: 2007-11
丛书名:
字数:1036千字   定价:¥79.00元
  页码:627   开本:16开
 

 

   本书是目前中文版本第一个真正介绍PHP 5及MySQL 5新增语法与功能的权威宝典!
本书本着精、全、要三宗旨,从理论中延伸,从实践中深入,详实并完善地描述了PHP 5的开发特性与MySQL 5数据库,如PHP数组与表单处理、PHP 5面向对象开发、Ajax、CLI、字符流处理、加密技术、图片处理及PHP代码优化,以及存储过程、游标、事务等进阶内容。书中第二部分的开发实例是作者开发的原创作品,该部分内容不仅会令读者的开发水平有所增进,而且可在案例的基础上进行二次开发,做出符合自己业务的网站系统。
本书既可作为初学者或刚刚从其他语言转来做PHP开发的程序员和软件工程师的学习参考书,也可作为掌握PHP 5的进阶应用及高级知识的案上学习指南。
图书目录
第1部分
 
第一篇  PHP 5基础知识
第1章  PHP 5概述 3
1.1  什么是PHP 3
1.1.1  PHP的历史 3
1.1.2  PHP的优点 4
1.1.3  PHP的精神 5
1.1.4  PHP与Web 2.0 6
1.2  PHP 5的新特性 6
1.2.1  新的面向对象模式 7
1.2.2  新的面向对象特性 7
1.2.3  其他新特性 10
1.3  PHP 5的扩展库 11
1.3.1  XML扩展 12
1.3.2  SPL 13
1.3.3  MySQLi扩展 13
1.3.4  PDO数据库抽象层 13
1.3.5  JSON扩展 13
1.4  PHP 5外部扩展库 14
1.4.1  PECL扩展 14
1.4.2  PEAR扩展 14
1.5  PHP 5的其他更新 14
1.5.1  Zend引擎2.0 14
1.5.2  新的内存管理器 14
1.5.3  Zend Optimizer与Zend Core 14
1.6  PHP与Web服务器 15
1.6.1  Apache 15
1.6.2  Microsoft IIS 15
1.6.3  其他Web服务器 15
1.7  PHP 5安装与配置 15
1.7.1  Win32平台下Apache环境安装 16
1.7.2  Win32平台下的IIS环境安装 36
1.7.3  Win32平台下使用集成化安装包 39
1.7.4  FreeBSD平台 40
1.7.5  Linux平台 47
1.8  PHP配置与初步优化 49
1.9  其他注意的问题 49
1.10  PHP开发工具 50
1.11  小结 53
第2章  PHP 5开发基础 54
2.1  第一个PHP脚本 54
2.2  变量与表达式 55
2.2.1  打印与输出变量 55
2.2.2  显示数组与对象 57
2.2.3  变量的数据精度 58
2.2.4  变量的变量 59
2.2.5  超级全局变量数组 59
2.2.6  变量的作用域 64
2.3  变量类型 64
2.3.1  布尔型变量 64
2.3.2  NULL数据类型 65
2.3.3  Resource 65
2.3.4  静态变量 66
2.4  变量操作符 66
2.4.1  算术运算符 67
2.4.2  赋值操作符 67
2.4.3  字符串操作 68
2.4.4  前置与后置的加减运算 68
2.4.5  引用操作符 69
2.4.6  三元操作符 69
2.4.7  比较运算符 69
2.4.8  布尔运算符 70
2.4.9  位操作符 70
2.4.10  其他操作符 70
2.4.11  变量与脚本处理 71
2.4.12  数据转换 72
2.5  常量 74
2.5.1  常量的定义 75
2.5.2  PHP魔术常量 75
2.6  PHP的控制结构 76
2.6.1  分支语句 76
2.6.2  循环结构 79
2.7  包含控制 83
2.7.1  include与require 83
2.7.2  include_once与require_once 84
2.7.3  eval() 84
2.8  函数 85
2.8.1  PHP内部函数 85
2.8.2  中止脚本的执行:exit()与die() 85
2.8.3  用户自定义函数 86
2.8.4  函数的命名规则 86
2.8.5  函数的作用域 87
2.8.6  从函数中返回值 87
2.8.7  返回引用的值 88
2.8.8  函数参数的传递 89
2.8.9  函数里的静态变量 91
2.8.10  函数的递归 92
2.8.11  函数命名重复的解决方法 92
2.8.12  创建自己的函数库 92
2.9  字符串操作 92
2.9.1  单引号与双引号的区别 92
2.9.2  手动转义字符串数据 93
2.9.3  自动转义字符串数据 93
2.9.4  字符串序列化 94
2.9.5  字符串整理 96
2.9.6  格式化字符串 96
2.9.7  字符串分割 96
2.9.8  字符串截取 97
2.9.9  计算字符串长度 98
2.9.10  字符串单词统计 98
2.9.11  字符串查找 99
2.9.12  字符串处理 101
2.10  日期与时间 106
2.10.1  时间戳 107
2.10.2  PHP日期函数 107
2.10.3  PHP时间函数 109
2.11  网络相关处理 112
2.11.1  header()函数 112
2.11.2  处理URL字符串 114
2.11.3  获得用户来源 116
2.11.4  获得PHP环境信息 117
2.12  小结 117
第3章  正则表达式 118
3.1  正则表达式简介 118
3.2  正则表达式功能 118
3.3  POSIX正则表达式 119
3.3.1  ^和$定位符 119
3.3.2  POSIX量词 119
3.3.3  方括号表达式 120
3.3.4  预定义字符簇 121
3.3.5  POSIX正则表达式函数 121
3.4  PCRE正则表达式函数 123
3.4.1  PCRE字符类 123
3.4.2  PCRE匹配 123
3.4.3  PCRE正则表达式函数 124
3.5  正则表达式VS函数 130
3.6  创建BBCode 130
3.7  小结 131
第4章  PHP数组 132
4.1  什么是数组 132
4.2  数组的类型 133
4.2.1  数字索引数组 133
4.2.2  关联数组 133
4.3  数组的构造 134
4.3.1  一维数组 134
4.3.2  二维数组与多维数组 135
4.3.3  多维数组 140
4.4  快速创建数组 142
4.4.1  使用range()函数 142
4.4.2  为数组追加数据 143
4.4.3  修改数组内容 143
4.5  访问和处理数组内容 143
4.5.1  数字索引数组排序 143
4.5.2  关联数组排序 144
4.5.3  数组随机抽取shuffle()和
4.5.3  array_rand() 145
4.5.4  统计数组元素出现的次数 146
4.5.5  数组合并 147
4.5.6  查找数组中键名是否存在 147
4.5.7  查找数组值是否存在 147
4.5.8  计算数组中数值元素的和 148
4.5.9  去除数组中重复的元素值 148
4.5.10  移动数组内部指针 149
4.5.11  取得关联数组的键名 150
4.5.12  访问数组的键名和元素 150
4.5.13  判断数组的类型 150
4.5.14  显示数组内容与结构 151
4.5.15  移除数组中的指定元素 153
4.5.16  在数组顶部插入元素 153
4.5.17  在数组任意位置插入元素 154
4.5.18  数组元素的统计count()和sizeof()
4.5.18  函数 155
4.5.19  数组键名与值的对调array_flip()
4.5.19  函数 155
4.5.20  对数组元素分组统计array_values()
4.5.20  函数 155
4.5.21  删除数组首末尾元素 156
4.5.22  删除数组任意位置的元素 157
4.5.23  将数组内容导出为变量extract()
4.5.23  函数 159
4.6  数组遍历(使用foreach) 159
4.6.1  一维索引数组的遍历 160
4.6.2  一维关联数组的遍历 160
4.7  使用for语句对数组遍历 161
4.8  使用for语句实现树状菜单 162
4.9  数组遍历list()和each() 164
4.10  数组复位reset()函数 164
4.10.1  each() 164
4.10.2  list() 165
4.11  foreach与for语句对数组处理的比较 165
4.12  数组内容过滤 166
4.13  小结 168
第二篇  PHP 5核心应用与规范
第5章  表单——处理用户输入 170
5.1  表单与HTML 170
5.2  设计表单 170
5.3  GET与POST的区别 171
5.4  表单元素 172
5.5  表单的处理方法 174
5.5.1  检查表单提交的来源 174
5.5.2  一个完整表单处理 175
5.6  其他处理表单的方法 177
5.6.1  使用import_request_variables()
5.6.1  函数 177
5.6.2  使用extract()函数 178
5.7  多页面间传递数据 179
5.8  验证表单数据 179
5.8.1  客户端验证 179
5.8.2  服务器端验证 180
5.8.3  避免表单重复提交 180
5.8.4  表单过期的处理 181
5.8.5  判断表单动作的技巧 182
5.9  表单安全 183
5.9.1  处理全局性错误 183
5.9.2  预防SQL注入 186
5.10  开发安全的代码 187
5.10.1  用户输入验证 187
5.10.2  高级数据验证:使用ctype 187
5.10.3  数据过滤 - PECL filter扩展 187
5.10.4  input_get()函数 189
5.10.5  路径检测 189
5.10.6  魔法引用magic_quotes_gpc 190
5.10.7  其他高效的解决方案 190
5.11  小结 191
第6章  PHP加密技术 192
6.1  MD5算法 192
6.2  SHA1算法 192
6.3  Cracklib扩展库 193
6.4  mcrypt扩展与DES算法 193
6.4.1  mcrypt加密扩展 194
6.4.2  mcrypt加密模式 194
6.4.3  mcrypt初始化向量 195
6.4.4  mcrypt加密与解密方法 195
6.5  小结 197
第7章  PHP国际化与本地化 198
7.1  I18N和L10N 198
7.2  字符集与编码 198
7.2.1  ASCII字符集 199
7.2.2  ISO-8859字符集 199
7.2.3  ANSI编码 199
7.2.4  GB2312与GBK编码 199
7.2.5  Unicode字符集 200
7.2.6  正确使用文件编码 201
7.3  gettext函数 201
7.3.1  设置gettext 202
7.3.2  php_gettext函数集 202
7.3.3  编写I18N程序 202
7.3.4  设置gettext po文件 203
7.4  系统本地化函数族 205
7.4.1  setlocale函数 205
7.4.2  货币值本地化 206
7.4.3  使用pc_format_currency( )函数 207
7.5  Iconv函数 208
7.6  mbstring扩展库 209
7.6.1  使用mbstring进行字符串截取 209
7.6.2  检测字符串编码 210
7.6.3  mbstring转换编码 210
7.7  小结 211
第8章  PHP开发规范 212
8.1  代码结构 212
8.1.1  一个脚本服务全部 212
8.1.2  分离显示逻辑 213
8.2  良好的编码风格与样式 213
8.2.1  代码注释 214
8.2.2  代码缩进 214
8.2.3  使用必要的空格 215
8.2.4  SQL编写规范 215
8.2.5  控制结构 216
8.2.6  函数的命名 216
8.2.7  类命名规范 216
8.2.8  减少出错的技巧 217
8.3  小结 217
第9章  PHP 5面向对象开发 218
9.1  面向对象基础 218
9.2  PHP 5 面向对象编程概述 219
9.2.1  类的封装 219
9.2.2  类的继承 219
9.3  对象 219
9.4  创建和使用类 220
9.5  类的结构与定义 220
9.6  成员方法 220
9.7  成员变量与属性 221
9.8  $this关键字 222
9.9  构造方法 222
9.10  析构方法 223
9.11  类的继承与多态 224
9.11.1  类的继承——extends 224
9.11.2  数据的隐藏 226
9.11.3  访问成员变量的约束 226
9.11.4  设置访问成员方法 227
9.11.5  类常量 228
9.11.6  静态成员变量 228
9.11.7  静态成员方法 230
9.12  对象传递 230
9.13  克隆一个对象——clone 230
9.14  对象的比较 231
9.15  对象类型的检测——instanceof 232
9.16  克隆一个成员方法 232
9.17  类的多态性 233
9.18  parent::与self::关键字 234
9.19  抽象方法与抽象类 235
9.20  接口的实现 237
9.21  实现多个接口 238
9.22  final方法 240
9.23  final类 240
9.24  例外与异常处理 241
9.25  方法中声明类的类型 242
9.26  重载与多态 242
9.27  魔术方法 243
9.27.1  __get()与__set()方法 243
9.27.2  __call()方法 244
9.27.3  __sleep()与__wakeup()方法 245
9.27.4  __toString()方法 245
9.27.5  __autoload()方法 246
9.28  类映射API Reflection 247
9.29  小结 253
第10章  PHP会话管理 254
10.1  概述 254
10.2  Cookie管理 254
10.2.1  什么是Cookie 254
10.2.2  Cookie工作原理 255
10.2.3  Cookie应用开发 255
10.2.4 一个通用的Cookie类 259
10.2.5  解决方案 260
10.3  Session管理 261
10.3.1  什么是Session 261
10.3.2  Session配置 262
10.3.3  Session应用 263
10.3.4  Session编码与解码 267
10.3.5  Session中保存数组 267
10.3.6  Session中保存对象 268
10.3.7  Session存取优化 270
10.3.8  多服务器下共享Session 271
10.3.9  Session安全 274
10.4  小结 275
第11章  PHP输入输出缓冲 276
11.1  缓冲技术简介 276
11.2  从缓冲读取内容 277
11.3  使用回调函数 278
11.4  输出回调函数 278
11.5  压缩内容输出 279
11.6  小结 279
第12章  文件系统与字符流 280
12.1  文件与路径 280
12.1.1  分析一个文件的名称与扩展名 280
12.1.2  利用PHP自带函数分析当前
12.1.2  路径 281
12.1.3  显示相对路径的真实路径 281
12.2  文件类型与相关信息 281
12.2.1  filesize()——计算文件的大小 282
12.2.2  取得文件的建立、最后访问与更新
12.2.2  时间 282
12.2.3  fileperms()——文件属性以及
12.2.3  权限 282
12.2.4  取得文件所有者(Owner) 282
12.3  文件的顺序读写 282
12.3.1  文件打开与写入 282
12.3.2  文件输出 284
12.3.3  读取文件内容 285
12.4  文件的非线性读写 285
12.4.1  fseek()函数 286
12.4.2  ftell()函数 286
12.4.3  rewind()函数 286
12.4.4  parse_ini_file()函数 287
12.5  自定义日志记录 288
12.6  目录和磁盘操作 288
12.6.1  disk_free_space()——统计某个
12.6.1  目录的剩余空间 288
12.6.2  disk_total_space()——显示逻辑
12.6.2  磁盘的容量 289
12.6.3  getcwd()/chdir()函数 289
12.6.4  opendir()与readdir()函数 289
12.6.5  实现iterator接口的目录读取 290
12.7  字符流 291
12.7.1  流与封装器的原理 292
12.7.2  PHP 5的预置流包装器 292
12.7.4  流与封装器的应用 293
12.7.5  Filter过滤器及其应用 295
12.7.6  流相关函数 296
12.7.7  创建自己的流过滤器 298
12.8  取得HTTPS加密内容 299
12.9  创建自己的流封装器 300
12.10  小结 301
第三篇  MySQL 5与PHP 5接口
第13章  Web数据库设计 303
13.1  数据库和数据库系统的概念 303
13.2  数据库设计的步骤 304
13.3  表名与字段名规则 305
13.4  小结 306
第14章  MySQL 5数据库 307
14.1  MySQL简介 307
14.2  MySQL 5特性 308
14.2.1  MySQL 5优点 308
14.2.2  MySQL 5缺点 308
14.2.3  MySQL 5性能 308
14.3  MySQL数据库存储类型 309
14.4  MySQL字段类型 310
14.5  MySQL字符集与整理 311
14.5.1  MySQL 5字符集支持的原理 311
14.5.2  修改MySQL字符集方法 311
14.6  MySQL 5应用与管理 312
14.6.1  登录到MySQL 312
14.6.2  修改root管理密码 313
14.6.3  创建数据库 313
14.6.4  改变数据库存储路径 313
14.6.5  MySQL权限系统 314
14.6.6  phpMyAdmin管理工具 317
14.7  MySQL管理工具 324
14.8  小结 324
第15章  MySQL数据库数据操纵 325
15.1  MySQL操作与SQL 325
15.2  检索表中的数据 328
15.2.1  SELECT 语句 328
15.2.2  SELECT的聚集函数 329
15.2.3  结果集排序 329
15.2.4  函数 329
15.2.5  关联查询 329
15.3  高级SQL技术 331
15.3.1  主键 331
15.3.2  子查询 332
15.3.3  联合查询 332
15.4  MySQL事务处理与触发器 332
15.4.1  存储进程 332
15.4.2  触发器(trigger) 333
15.4.3  视图 333
15.4.4  PHP与MySQL字符集 334
15.5  小结 335
第16章  PHP与MySQL数据库接口 336
16.1  PHP5与MySQL连接的mysql扩展 336
16.2  数据库查询 337
16.3  其他显示记录集的函数 339
16.4  PHP 5与MySQL的新接口MySQLi 342
16.5  智能选择MySQL扩展 351
16.6  小结 354
第17章  PHP数据库抽象层 355
17.1  什么是数据库抽象层 355
17.2  常用的数据库抽象层 356
17.2.1  PEAR:DB 356
17.2.2  ADODB 357
17.2.3  Metabase 357
17.2.4  MDB 358
17.2.5  MDB2 358
17.2.6  Creole 359
17.2.7  PDO 359
17.2.8  PHPLib 359
17.3  PDO数据库抽象类 359
17.3.1  PDO简介 359
17.3.2  PDO的安装 360
17.3.3  PDO连接数据库 360
17.3.4  使用PDO查询 361
17.3.5  错误与异常处理 362
17.3.6  取得查询结果 364
17.4  ADODB 368
17.4.1  使用ADODB 368
17.4.2  ADODB安装 369
17.4.3  启动ADODB 369
17.4.4  ADODB的查询方法 370
17.4.5  移动记录集 370
17.4.6  使用ADODB生成HTML 371
17.4.7  使用ADODB进行分页 371
17.4.8  生成下拉选择菜单 371
17.4.9  ADODB开发实例 371
17.5  PHPLib 383
17.5.1  使用PHPLib查询 383
17.5.2  创建GetAll方法 385
17.6  小结 386
第四篇  PHP 5进阶与技巧
第18章  Smarty与模板技术 388
18.1  MVC简介 388
18.2  模板系统 389
18.3  Smarty概述 389
18.3.1  Smarty的优点 389
18.3.2  Smarty开发特性 390
18.4  安装Smarty 390
18.5  Smarty开发基础 392
18.5.1  第一个模板程序 392
18.5.2  编译后的模板 393
18.5.3  Smarty区块 394
18.5.4  Smarty注释 394
18.5.5  Smarty变量与变量格式化 394
18.6  Smarty的控制结构 397
18.6.1  IF分支结构 397
18.6.2  循环结构 399
18.6.3  Smarty生成表单元素 407
18.6.4  Smarty文件包含 409
18.7  Smarty缓存 410
18.8  深入Smarty开发 410
18.8.1  register_function 410
18.8.2  register_block 411
18.8.3  register_modifier 411
18.8.4  在模板内运行PHP代码 411
18.8.5  几个重要的模板修饰符 412
18.8.6  Smarty的保留变量 413
18.8.7  模板配置文件 414
18.8.8  Smarty工作台 414
18.8.9  Smarty生成静态页面 415
18.8.10  制作线上日历 415
18.8.11  Smarty与ADODB 416
18.9  小结 418
第19章  PHP和Ajax技术 419
19.1  Ajax简介 419
19.2  Ajax特性 420
19.3  Xajax简介 420
19.4  Xajax如何工作 420
19.5  异步更新内容 421
19.6  异步处理表单数据 423
19.7  增加自定义功能 424
19.8  解决乱码 424
19.9  Smarty与Xajax 424
19.10  小结 426
第20章  使用PHP编写Shell 427
20.1  简介 427
20.2  PHP CLI Shell脚本 427
20.2.1  CLI 与CGI的区别 427
20.2.2  CLI的配置参数 427
20.3  PHP命令行接口(CLI) 428
20.4  CLI命令选项 429
20.5  CLI开发 430
20.6  CLI实际应用 434
20.7  小结 437
第21章  PHP网络开发 438
21.1  Socket技术 438
21.1.1  Socket原理 438
21.1.2  建立一个连接 439
21.1.3  发送一个请求 439
21.1.4  查询Whois信息 440
21.1.5  创建自己的Socket服务器 441
21.2  电子邮件 442
21.2.1  电子邮件简介 442
21.2.2  MTA和SMTP 442
21.2.3  PHP邮件配置 443
21.2.4  电子邮件头 444
21.2.5  MIME 444
21.3  使用mail()函数 446
21.4  使用Socket发送邮件 448
21.5  获取远程内容与自动化 449
21.5.1  使用CURL 449
21.5.2  使用Snoopy类 451
21.5.3  FTP操作 453
21.5.4  PHP与网络协议 455
21.6  小结 455
第22章  PHP文件上传 456
22.1  文件上传简介 456
22.2  处理上传文件 457
22.3  处理多文件上传 461
22.4  突破上传的内存限制 463
22.5  小结 463
第23章  图片与媒体处理 464
23.1  使用GD2扩展库 464
23.1.1  打开一张图片 465
23.1.2  打开任意格式的图片 465
23.1.3  显示和保存图片 466
23.1.4  图片转换 467
23.1.5  创建文字图片 468
23.1.6  绘制图形 469
23.1.7  创建验证码——CAPTCHA 470
23.1.8  缩略图片处理 471
23.1.9  创建水印图片 473
23.2  使用Ming扩展创建Flash 475
23.2.1  创建按钮 475
23.2.2  静态文字 476
23.2.3  动态文字 477
23.2.4  绘制图形 478
23.2.5  使用图片 479
23.3  使用ImageMagick 480
23.3.1  ImageMagick简介 480
23.3.2  安装ImageWand 481
23.3.3  读取图片内容 481
23.3.4  读取图片尺寸 482
23.3.5  图片裁切 482
23.3.6  生成图片缩略图 482
23.3.7  转换图片格式 483
23.3.8  控制图片旋转 483
23.3.9  重新缩放图片 484
23.3.10  加入渲染效果 484
23.3.11  压缩JPEG图片 485
23.4  小结 485
第24章  XML与RSS 486
24.1  XML 486
24.1.1  XML的结构与定义 486
24.1.2  XML与HTML 487
24.2  创建与解析XML文档 488
24.2.1  创建一个XML文档 489
24.2.2  使用SAX解析XML 490
24.2.3  DOM 492
24.2.4  SimpleXML 496
24.3  RSS聚合与解析技术 497
24.3.1  RSS简介 497
24.3.2  RSS 0.9 497
24.3.3  RSS3 1.0 498
24.3.4  RSS 2.0 499
24.3.5  Atom 501
24.4  XML Reader 503
24.5  XML与Smarty 504
24.6  小结 504
第25章  Web服务与SOAP 505
25.1  Web服务 505
25.1.1  Web服务概述 505
25.1.2  Web服务的特点 506
25.2  SOAP的消息体 507
25.2.1  SOAP封套(SOAP Envelope) 507
25.2.2  SOAP头(SOAP Header) 507
25.2.3  SOAP错误信息(SOAP Fault) 507
25.2.4  消息体(SOAP Body) 508
25.3  PHP中的SOAP配置 508
25.4  使用PHP开发SOAP应用 509
25.4.1  WSDL 509
25.4.2  建立SOAP服务器端 512
25.4.3  建立SOAP客户端 513
25.5  小结 513
第26章  PHP与WAP技术 514
26.1  WAP技术简介 514
26.2  WAP配置 514
26.3  WAP页面 514
26.3.1  WAP页面简介 515
26.3.2  WAP页面跳转 515
26.3.3  使用WAP制作登录页面 517
26.4  Smarty与WAP 521
26.5  小结 522
第五篇  PHP 5调试、升级与优化
第27章  错误与异常处理 524
27.1  概述 524
27.2  错误的类型 524
27.2.1  编程错误 524
27.2.2  未定义符号 525
27.2.3  轻量级错误 527
27.2.4  PHP产生的错误 528
27.2.5  错误与例外处理 530
27.3  小结 535
第28章  升级到PHP5 536
28.1  简介 536
28.2  对象的引用 536
28.3  构造对象 537
28.4  get_class函数 537
28.5  is_a()函数与instance of 537
28.6  E_STRICT 538
28.6.1  自动建立对象 538
28.6.2  var与public 538
28.7  其他兼容性的问题 538
28.7.1  命令行接口 538
28.7.2  旧的超级全局数组的升级 538
28.7.3  函数修正与功能升级 539
28.8  小结 539
第29章  PHP优化技巧 540
29.1  PHP脚本级优化 540
29.1.1  require比require_once快 541
29.1.2  不做重复的车轮 541
29.2  使用代码优化工具 542
29.3  缓存加速 543
29.3.1  使用eAccelerator 543
29.3.2  使用APC 545
29.4  HTTP加速 546
29.4.1  HTTP头信息 546
29.4.2  启用GZIP内容压缩 546
29.5  MySQL性能优化 546
29.5.1  添加索引 546
29.5.2  MySQL缓存与性能调优 547
29.6  MySQL日志维护 549
29.7  数据库外部优化 549
29.7.1  服务器硬件优化 549
29.7.2  磁盘优化 550
29.7.3  操作系统优化 550
29.8  使用反向代理 550
29.9  Apache服务器优化 551
29.10  内容压缩与优化 551
29.11  分布与负载均衡 552
29.12  小结 554
 
第2部分  实战PHP5
 
第30章  实例开发:会员注册系统 557
30.1  概述 557
30.2  页面流程 557
30.2.1  用户注册流程 557
30.2.2  用户登录流程 558
30.3  数据库结构 558
30.4  UI与界面 561
30.5  目录结构与文件说明 563
第31章  实例开发:圈子系统开发 571
31.1  目录结构与文件说明 571
31.2  页面流程 571
31.2.1  创建圈子 571
31.2.2  管理圈子 572
31.2.3  加入其他人创建的圈子 573
31.3  数据库结构 573
31.4  UI与界面 576
第32章  实例开发:爱问系统 578
32.1  概述 578
32.2  页面流程 578
32.3  目录结构与文件说明 580
32.4  UI与界面 581
32.5  数据库结构 585
第33章  实例开发:多用户博客系统 587
33.1  概述 587
33.2  目录结构与文件说明 587
33.3  页面流程 588
33.4  UI与界面 588
33.5  数据库结构 589
33.6  小结 591
附录A  PHP在线资源 592
附录B  Zend Core安装 593
附录C  PHP扩展开发 599
附录D  MySQL字符集与整理 601
附录E  代码页与Charset对照表 605
附录F  php.ini配置详解 606
附录G  HTTP返回代码表(RFC2068) 626

 

 


5.走进搜索引擎

著者:
作译者: 梁斌编著
ISBN号: 978-7-121-04922-4
出版日期: 2007-10
丛书名:
字数:258千字   定价:¥49.80元
  页码:272   开本:16开
   
 
   在网络普及的今天,人们经常在信息海洋中彷徨,在万维网迷宫般的复杂与魅力之间挣扎。直到搜索引擎这一伟大的技术产生,才使得人们犹如找到了走出迷宫的灯塔,可以非常便捷地找到自己所需要的信息。
正是因为搜索引擎离我们越来越近,所以越来越多的人期待着能够揭开她神秘的面纱。其实搜索引擎并不是变幻莫测的大海,也不是高不可攀的山峰。请拿起本书,它就是引领你的火炬,它就是你身边的伙伴,它将带着你走进搜索引擎。在那里,你必将会被搜索引擎精致的设计和宏伟的架构所征服。
本书由搜索引擎开发研究领域年轻而有活力的科学家精心编写,作者将自己对搜索引擎的深刻理解和实际应用巧妙地结合,使得从未接触过搜索引擎原理的读者也能够轻松地在搜索引擎的大厦中遨游一番。
本书作为搜索引擎原理与技术的入门书籍,面向那些有志从事搜索引擎行业的青年学生、需要完整理解并优化搜索引擎的专业技术人员、搜索引擎的营销人员,以及网站的负责人等。
本书是从事搜索引擎开发的工程技术人员难得的参考书,也可作为大中专院校相关专业的教学辅导书。
图书目录
第一章  引言 1
时至今日,万维网迷宫般的复杂和魅力还在继续。因为它每天都在不断地产生、更新或消失各种各样的网页。其魅力依然,然而复杂不在。正是由于诞生了搜索引擎(search engine)这样伟大的技术,万维网复杂的局面才被打破。搜索引擎成为带领人们走出迷宫的灯塔,帮助千百万的网民便捷地找到重要的信息。
第一节  什么是搜索引擎 2
第二节  搜索引擎的发展简史 5
 搜索引擎的发展历史 5
第三节  搜索引擎大事快览 15
第四节  国内著名搜索引擎 17
 百度(www.baidu.com) 17
 中搜(www.zhongsou.com) 18
 天网(e.pku.edu.cn) 19
 搜狗(www.sogou.com) 20
参考文献 21
第二章  搜索引擎概貌 23
万维网的发展迫切地要求一种快速、全面、准确且稳定可靠的信息查询方法,由于搜索引擎满足了这4个需求,所以才奠定了其在科学技术上的高度。有人甚至把搜索引擎和操作系统并列为当今最为复杂的系统软件。
第一节  搜索引擎的主要需求 24
 查得快 24
 查得全 25
 查得准 25
 查得稳 27
第二节  搜索引擎的4大系统 28
 搜索引擎的体系结构 28
第三章  搜索引擎的下载系统 31
在搜索引擎的4大系统中,第1个系统是下载系统。和航天运载火箭系统的动力系统一样,下载系统是搜索引擎大厦的基础。搜索的数据均来自于下载系统的工作,其工作方式巧妙、合理且强大。爬虫(也称为“Crawler”,中文译为“爬虫”,或者“蜘蛛”)是其中最华彩的乐章。让我们从爬虫开始,逐渐进入闪烁着奇异光芒的领地。
第一节  爬虫的发展历史 32
 世界上第1个爬虫 32
 爬虫的发展历程 33
第二节  万维网及其网页分析 34
 蝴蝶结型的万维网 34
 万维网的直径 37
 万维网的规模及变化特征 39
 网页的特征 39
第三节  有关爬虫的基本概念 41
 爬虫 41
 种子站点 41
 URL 42
 Backlinks 42
第四节  网页抓取原理 43
 telnet和wget 43
 从种子站点开始逐层抓取 44
 不重复抓取策略 50
 网页抓取优先策略 59
 网页重访策略★ 61
 Robots协议 67
 其他应该注意的礼貌性问题 69
 抓取提速策略(合作抓取策略) 70
第五节  网页库 77
第六节  下载系统回顾及未来发展 82
参考文献 84
第四章  搜索引擎的分析系统 86
搜索引擎的4大系统中的第2个系统是分析系统,分析系统主要完成的工作包括信息抽取、网页消重、中文分词和PageRank计算等。
第一节  知识准备 87
 HTML语言 87
 锚文本(anchor text) 87
 半结构化数据(Semi-structured data) 88
第二节  信息抽取及网页信息结构化 89
 网页结构化的目标 89
 建立HTML标签树 93
 通过投票方法得到正文 98
 网页结构化过程回顾 103
第三节  网页查重 105
 网页查重技术发展历史 105
 网页查重实现方法 107
第四节  中文分词 113
 什么是中文分词 113
 通过字典实现分词 114
 通过统计学方法实现分词 120
第五节  PageRank 121
 PageRank的来由 121
 PageRank的基本想法 122
 PageRank的计算公式 124
 PageRank的计算方法 ★ 129
第六节  分析系统结构图 134
参考文献 136
第五章  搜索引擎的索引系统 139
在搜索引擎的4大系统中,第3个系统称为“索引系统”。该系统就好像搜索引擎的数据大本营,在这里存储了并索引了数以亿计的网页。
第一节  知识准备 140
 信息 140
 索引 141
 倒排索引、倒排表、临时倒排文件、最终倒排文件 141
 其他概念 142
第二节  全文检索 143
 全文检索 143
第三节  文档编号 146
 编号的本质 146
 文档编号的方法 147
 游程编码 149
第四节  倒排索引 154
 经典的倒排索引 154
 正排索引(前向索引) 155
 倒排索引 158
第五节  数据规模的估计 163
 齐普夫法则 163
 布尔检索模型下的索引规模估计★ 165
第六节  涉及存储规模的一些计算 170
 正排表与倒排表的合并 170
 多个临时倒排文件的归并 174
 倒排索引分布式存储 179
 倒排文件缓存 183
 倒排索引词典统计信息的计算 183
第七节  倒排索引文件的创建过程 185
 创建倒排表 185
 计算统计信息 187
参考文献 189
第六章  搜索引擎的查询系统 191
在搜索引擎4大系统中,第4个系统称为“查询系统”。查询系统直接面对用户,在接收用户的查询请求后,通过检索、排序及摘要提取等计算,将计算结果组织成搜索结果页返回给用户。整个查询过程不仅要快,而且必须能够提供用户满意的查询结果。
第一节  知识准备 192
 什么是信息熵 192
 检索和查询的区别 196
 检索词和查询词的区别 196
 自动文本摘要(Automatic Text Summarization) 197
第二节  网页信息检索 198
 早期的检索模型 198
 向量空间模型(Vector Space Models) 201
 关键词权重的量化方法TF/IDF★ 207
 搜索引擎采用的检索模型 213
 多文档列表求交计算 215
 检索结果排序 222
 堆排序 223
第三节  中文自动摘要 230
 自动摘要的发展历史 230
 自动摘要的含义和实现 231
第四节  生成搜索结果页 239
 生成搜索结果页 239
第五节  搜索结果页的缓存 242
 搜索结果页的缓存 242
第六节  推测用户查询意图 245
 查询分类 245
 推测信息类、事物类的查询意图 247
第七节  查询系统的当前热点和发展方向 249
 查询系统的当前热点 249
参考文献 250
第七章  搜索引擎的其他话题 252
本书初步介绍了搜索引擎4大系统各自的运作原理,以及相互配合的关系。本节通过回答一些有关搜索引擎的基本问题,以从宏观上更好地理解和认识搜索引擎。
第一节  搜索引擎问与答 253
 为什么搜索引擎的搜索速度这么快 253
 为什么搜索引擎能够返回那么多的查询结果 255
 为什么搜索引擎总能返回最想要的结果 256
 搜索引擎如何大规模存储网页的 257
 什么是SEO 259
 什么是元搜索引擎 260
 搜索引擎认为的作弊行为是哪些 261
 如何进一步学习和了解搜索引擎发展的最新成果 262
第二节  搜索引擎未来的发展 265
 新兴的搜索产品 265
 搜索技术的未来 268
参考文献 270
附录A  搜索引擎系统结构全观图 271
 
推荐序
搜索改变生活
搜索引擎,改变了二十一世纪人类的生活方式。越来越多的人学会通过搜索,从海量的互联网信息中找到和分享全人类的经验与智慧。搜索引擎不仅成为人们最常使用的互联网应用,同时也开创了一种优秀的商业模式,引领着互联网技术与商业的发展。
搜索引擎有着对计算机科学与技术孜孜不倦的追求,将人工智能、信息检索、文本处理、系统结构、数据库技术等都发挥到了极致,以追求响应更快、结果更准确。如同制造原子弹或者登月计划一样,搜索引擎在科技方面的突破也会辐射到互联网的其他应用领域。
在Google、Yahoo等国外公司投入巨资进入搜索引擎应用领域之时,中国本土公司百度、搜狗、有道,也不断加大投入,努力为中国用户打造更优秀的中文搜索引擎。能够有能力、有信念从事这样研发的中国公司不是太多,而是太少了;而对技术有着狂热爱好,能够将搜索引擎研发作为事业来看待的人才也不是太多,而是太少了。
我经常在技术论坛上看到这样的提问:“现在的搜索引擎应该怎样设计数据库的表结构呢?(言下之意,还在考虑通用的关系数据库)”“搜索引擎是在用户搜索的时候,怎么能够这么快抓取其他网站的信息呢?(看起来还没有理解索引和镜像的概念)”。这些提问充分显示出大多数技术人员对搜索引擎工作原理的不理解。
市面上,对搜索引擎原理进行讲解的书非常稀少。搜索引擎公司更将各自研发中的关键技术和经验作为最高机密不予公开。我希望借助这本书,不仅可以让大众技术人员通过了解搜索引擎的工作原理,提高对技术的理解,更为那些想以搜索引擎研发为未来事业的人,打开一扇窗户。

  
搜狐 技术副总裁
2007-9-1
前   言
随着互联网的蓬勃发展,建立在互联网之上的各种应用也层出不穷,其中最为成功的莫过于万维网(WWW)。万维网被称为“网中之网”,是互联网上最受欢迎的服务之一。它运用超文本技术为人们访问信息资源提供了巨大的方便,但也以非线性组织的构建方式使人们在信息海洋中彷徨。
在互联网彷徨无计之时,搜索引擎就像引领互联网走出迷雾的灯塔。在搜索引擎的帮助下,网民不再需要记住复杂的网址和复杂的路径(URL),而只需记住搜索引擎的入口,提交查询词即可直接找到想要找的信息。就这样,搜索引擎成为破解互联网迷宫的金钥匙。
随着搜索引擎技术和商业模式的成熟,一方面,越来越多的人对搜索引擎产生了浓厚的兴趣,需要深入了解和认识搜索引擎;另一方面,由于搜索引擎是最高端、最复杂的互联网技术之一,各家公司都将核心技术秘而不宣。在这样的背景下,本书犹如一本引领读者走进搜索引擎的导游图,可以带领读者进入搜索引擎的腹地,一探搜索引擎神秘面纱的背后。那里是搜索引擎精致的设计和宏伟的架构,必定让您不虚此行。
本书主要内容
本书共包括7章,每章的主要内容如下。
第1章“引言”介绍了搜索引擎的基本背景知识,通过介绍搜索引擎的历史回顾了搜索引擎的发展历程。
第2章“搜索引擎概貌”宏观上介绍了搜索引擎,以及搜索引擎的主要系统划分。
第3章“搜索引擎的下载系统”介绍了搜索引擎下载系统的背景知识、设计原理和技巧,以及网页库的设计等。
第4章“搜索引擎的分析系统”分别介绍了信息抽取、网页查重、中文分词,以及PageRank等分析系统子模块的计算原理和实现细节。
第5章“搜索引擎的索引系统”通过全文检索、文档编号、正排表和倒排表等基本概念,全方位介绍了搜索引擎核心的索引技术。
第6章“搜索引擎的查询系统”介绍了查询系统的两个主要功能模块,即检索模块和摘要提取模块的工作方法和设计技巧,解开搜索引擎查询准确的奥秘所在。
第7章“搜索引擎的其他话题”通过回答有关搜索引擎的常见问题系统地介绍了搜索引擎各个系统的相互关系,并展望了搜索引擎未来的发展。
附录部分为搜索引擎系统全图,它将有助于理解搜索引擎各个系统的相互配合和协作关系。
如何阅读本书
本书中带★的章节中介绍了具有一定深度的理论知识,没有学过数学分析和概率论等基础知识的读者可以浏览这些章节。而不需要深究推导过程,只需要了解一些基本的结论即可。
在本书的主要章节,即第3章至第6章中,第5章介绍的索引系统最为复杂,较难理解。读者在第1遍通读时,不需要深入细节。待阅读查询系统后,再回头阅读索引系统会有更大地帮助。对于一些难以理解的地方可以阅读章节结束部分给出的参考文献,深入理解这些难点问题。
非技术类读者可以忽略第5章中的大部分内容,以及其他章节中技术性强的部分,而集中精力关注搜索引擎的基本策略和方法。
附录部分为搜索引擎全部系统的架构图,它将有助于宏观上理解搜索引擎各个系统相互配合的过程。
关于本书作者
作者毕业于南京大学软件学院,获得软件工程硕士学位。曾经发表过多篇论文,获得1项国家专利。作者主要的兴趣方向包括数据挖掘、Web挖掘、搜索引擎和软件工程等,目前在清华大学信息科学与技术国家实验室从事搜索引擎相关研究工作。
致谢
我首先要特别感谢我的妻子伍绍连,正是她的无私支持,使我能够全身心投入到写作中。在此书完成后,她通读了全书并提出了大量宝贵意见,使得本书增色不少。
感谢电子工业出版社计算机图书事业部孙学瑛女士,她是推动本书的完成最为关键性的人物。她参与了此书创作的全过程,为笔者提供了有关图书市场的宝贵信息,使得本书更加面向读者。
感谢此书参考文献的全部作者、搜索引擎研究界的杰出科学家们,以及其他为此书提出宝贵技术意见的业界同行,正是你们杰出的成就和无私的帮助,才能使本书达到了一定的学术水平。
由于作者水平有限,书中不足及错误之处在所难免,敬请专家和读者给予批评指正。
梁  斌 
2007年8月

 

 

分类:默认分类
?次阅读
 2007-10-19 13:55