目录 前言 . 1 第1 章 动态Web 内容概述 7 1.1 HTTP 和HTML:Berners-Lee 成名的关键 8 1.2 请求- 响应过程 8 1.3 PHP、MySQL、JavaScript、CSS 和HTML5 的优势 11 1.3.1 MariaDB:MySQL 的同胞兄弟 12 1.3.2 使用PHP .13 1.3.3 使用MySQL .14 1.3.4 使用JavaScript .15 1.3.5 使用CSS .16 1.4 于是HTML5 出现了 17 1.5 Apache Web 服务器 .17 1.6 处理移动设备 .18 1.7 关于开源 19 1.8 综合应用 19 1.9 思考题 21 第2 章 搭建开发服务器 22 2.1WAMP、MAMP 或LAMP 是什么? 23 2.2 在Windows 中安装AMPPS 23 2.2.1 测试安装结果 .28 2.2.2 访问文档根目录(Windows) .29 2.2.3 其他WAMP 30 2.3 在 macOS 中安装AMPPS 31 2.4 在Linux 中安装LAMP .33 2.5 远程工作 33 2.5.1 登录 34 2.5.2 使用SFTP 或FTPS 34 2.6 使用代码编辑器 35 2.7 使用IDE 36 2.8 思考题 38 第3 章 PHP 入门 . 39 3.1 在HTML 代码中嵌入PHP 39 3.2 本书示例 41 3.3 PHP 语言结构 .41 3.3.1 注释 41 3.3.2 基本句法 .42 3.3.3 变量 43 3.3.4 运算符 48 3.3.5 变量赋值 .52 3.3.6 多行字符串 54 3.3.7 变量类型 .57 3.3.8 常量 58 3.3.9 预定义的常量 58 3.3.10 echo 和print 命令的区别59 3.3.11 函数 .60 3.3.12 变量作用域61 3.4 思考题 66 第4 章 PHP 表达式和控制流 68 4.1 表达式 68 4.1.1 TRUE 或FALSE .69 4.1.2 字面量和变量 70 4.2 运算符 71 4.2.1 运算符优先级 72 4.2.2 结合性 74 4.2.3 关系运算符 75 4.3 条件语句 80 4.3.1 if 语句 80 4.3.2 else 语句 81 4.3.3 elseif 语句 83 4.3.4 switch 语句 .84 4.3.5 三元运算符 87 4.4 循环 .88 4.4.1 while 循环 88 4.4.2 dowhile 循环 .91 4.4.3 for 循环 91 4.4.4 跳出循环 .93 4.4.5 continue 语句 94 4.5 隐式和显式类型转换 95 4.6 PHP 动态链接 .96 4.7 动态链接实例 .97 4.8 思考题 98 第5 章 PHP 函数和对象 99 5.1 PHP 函数 100 5.1.1 定义函数 101 5.1.2 返回一个值 .102 5.1.3 返回一个数组 .104 5.1.4 引用传参 105 5.1.5 返回全局变量 .107 5.1.6 变量作用域小结 107 5.2 引入和导入文件 .108 5.2.1 include 语句 108 5.2.2 使用include_once 108 5.2.3 使用require 和require_once 109 5.3 PHP 不同版本的兼容性 109 5.4 PHP 对象 110 5.4.1 术语 . 110 5.4.2 声明一个类 . 112 5.4.3 创建对象 113 5.4.4 访问对象 113 5.4.5 克隆对象 115 5.4.6 构造方法 116 5.4.7 析构方法 116 5.4.8 编写方法 117 5.4.9 声明属性 118 5.4.10 声明常量 119 5.4.11 属性和方法的作用域 119 5.4.12 静态方法 120 5.4.13 静态属性 121 5.4.14 继承 122 5.5 思考题 .126 第6 章 PHP 数组 127 6.1 基本的数据存取 .127 6.1.1 数字索引数组 .127 6.1.2 关联数组 129 6.1.3 使用array 关键字赋值 130 6.2 foreachas 循环 .131 6.3 多维数组 .134 6.4 使用数组函数 137 6.4.1 is_array 137 6.4.2 count 137 6.4.3 sort 138 6.4.4 shuffle 138 6.4.5 explode 138 6.4.6 extract .139 6.4.7 compact .140 6.4.8 reset .141 6.4.9 end 142 6.5 思考题 .142 第7 章 实用PHP 技术 143 7.1 使用printf 143 7.1.1 设置精度 145 7.1.2 填补字符串 .146 7.1.3 使用sprintf 148 7.2 日期和时间函数 .148 7.2.1 日期常量 150 7.2.2 使用checkdate 151 7.3 处理文件 .152 7.3.1 检查文件是否存在 152 7.3.2 创建文件 152 7.3.3 从文件中读取内容 154 7.3.4 复制文件 155 7.3.5 移动文件 156 7.3.6 删除文件 156 7.3.7 更新文件 156 7.3.8 多方存取时锁定文件158 7.3.9 读取整个文件 .159 7.3.10 上传文件 160 7.4 系统调用 .166 7.5 XHTML 还是HTML5 ? 167 7.6 思考题 .168 第8 章 MySQL 入门 169 8.1 MySQL 基础知识 169 8.2 数据库术语概览 .170 8.3 通过命令行访问MySQL 171 8.3.1 启动命令行接口 171 8.3.2 使用命令行接口 175 8.3.3 MySQL 命令 176 8.3.4 数据类型 181 8.4 索引 191 8.4.1 创建索引 192 8.4.2 查询MySQL 数据库 197 8.4.3 联结表 208 8.4.4 使用逻辑运算符 210 8.5 MySQL 函数 . 211 8.6 通过phpMyAdmin 访问MySQL 211 8.7 思考题 .212 第9 章 精通MySQL 214 9.1 数据库设计 214 9.2 规范化 .216 9.2.1 **范式 217 9.2.2 第二范式 219 9.2.3 第三范式 221 9.2.4 什么时候不做规范化223 9.3 关系 224 9.3.1 一对一关系 .224 9.3.2 一对多关系 .225 9.3.3 多对多关系 .226 9.3.4 数据库的匿名性 227 9.4 事务 227 9.4.1 事务存储引擎 .228 9.4.2 使用BEGIN 229 9.4.3 使用COMMIT 230 9.4.4 使用ROLLBACK 230 9.5 使用EXPLAIN 231 9.6 备份和还原 232 9.6.1 使用mysqldump 232 9.6.2 创建备份文件 .234 9.6.3 从备份文件还原 236 9.6.4 转储CSV 格式 236 9.6.5 做好备份计划 .237 9.7 思考题 .238 第10 章 PHP 8 和MySQL 8 新特性 . 239 10.1 关于本章 239 10.2 PHP 8 .240 10.2.1 具名参数 240 10.2.2 表征 241 10.2.3 构造方法属性 241 10.2.4 即时编译 242 10.2.5 联合类型 242 10.2.6 空值**运算符 .242 10.2.7 match 表达式 243 10.2.8 新增函数 244 10.3 MySQL 8247 10.3.1 SQL 的更新 248 10.3.2 JSON(JavaScript Object Notation) 248 10.3.3 地理信息支持 248 10.3.4 可靠性 .249 10.3.5 速度和性能249 10.3.6 管理 249 10.3.7 **性 .250 10.4 思考题 250 第11 章 使用PHP 访问MySQL . 252 11.1 使用PHP 查询MySQL 数据库 .252 11.1.1 过程 252 11.1.2 创建登录文件 253 11.1.3 连接MySQL 数据库 254 11.2 一个实例 259 11.2.1 $_POST 数组 262 11.2.2 删除记录 263 11.2.3 显示表单 263 11.2.4 查询数据库 264 11.2.5 运行程序 265 11.3 MySQL 实践 266 11.3.1 创建表 .266 11.3.2 描述表 .267 11.3.3 删除表 .268 11.3.4 添加数据 269 11.3.5 检索数据 270 11.3.6 更新数据 271 11.3.7 删除数据 272 11.3.8 使用AUTO_INCREMENT 272 11.3.9 执行额外的查询 .274 11.4 防止黑客攻击 275 11.4.1 可以采取的措施 .277 11.4.2 使用占位符 278 11.4.3 防止 JavaScript 注入HTML .281 11.5 思考题 282 第12 章 表单处理 . 284 12.1 构建表单 284 12.2 获取提交的数据 286 12.2.1 默认值 .287 12.2.2 输入类型 288 12.2.3 净化输入 295 12.3 一个示例程序 297 12.4 HTML5 功能增强 300 12.4.1 autocomplete 属性 .300 12.4.2 autofocus 属性 .300 12.4.3 placeholder 属性 .301 12.4.4 required 属性 301 12.4.5 覆盖属性 301 12.4.6 width 和height 属性 .302 12.4.7 min 和max 属性 .302 12.4.8 step 属性 .302 12.4.9 form 属性 302 12.4.10 list 属性 303 12.4.11 颜色输入框 .303 12.4.12 数字和值域输入框 .303 12.4.13 日期和时间选择器 .303 12.5 思考题 304 第13 章 cookie、会话和身份验证 . 305 13.1 在PHP 中使用cookie 305 13.1.1 设置cookie 307 13.1.2 访问cookie 308 13.1.3 销毁cookie 308 13.2 HTTP 身份验证 308 13.2.1 存储用户名和密码 312 13.2.2 一个示例程序 314 13.3 使用会话 317 13.3.1 开始会话 318 13.3.2 结束会话 321 13.3.3 设置超时时间 322 13.3.4 会话的**性 323 13.4 思考题 326 第14 章 探索JavaScript 328 14.1 JavaScript 和HTML 文本 329 14.1.1 在文档头部引入脚本 330 14.1.2 老旧和非标准浏览器 331 14.1.3 引入JavaScript 文件 332 14.1.4 调试JavaScript 错误 332 14.2 使用注释 333 14.3 分号 333 14.4 变量 333 14.4.1 字符串变量334 14.4.2 数值变量 334 14.4.3 数组 335 14.5 运算符 336 14.5.1 算术运算符336 14.5.2 赋值运算符336 14.5.3 比较运算符337 14.5.4 逻辑运算符337 14.5.5 递增、递减和简短赋值运算符 338 14.5.6 字符串拼接338 14.5.7 转义字符 338 14.6 变量类型 339 14.7 函数 341 14.8 全局变量 341 14.9 局部变量 341 14.10 文档对象模型 .345 14.10.1 $ 符号的另一个用途 347 14.10.2 使用DOM 348 14.11 关于document.write.349 14.11.1 使用console.log 349 14.11.2 使用alert .349 14.11.3 写入元素 .349 14.11.4 使用document.write 349 14.12 思考题 .350 第15 章 JavaScript 表达式和控制流. 351 15.1 表达式 351 15.2 字面量和变量 352 15.3 运算符 353 15.3.1 运算符优先级 354 15.3.2 结合性 .355 15.3.3 关系运算符356 15.4 with 语句 .359 15.5 使用 onerror 360 15.6 使用trycatch 361 15.7 条件语句 362 15.7.1 if 语句 .362 15.7.2 else 语句 .362 15.7.3 switch 语句 363 15.7.4 ? 运算符 .365 15.8 循环 366 15.8.1 while 循环 .366 15.8.2 dowhile 循环 367 15.8.3 for 循环 367 15.8.4 跳出循环 368 15.8.5 continue 语句 369 15.9 显式转换类型 370 15.10 思考题 .370 第16 章 JavaScript 函数、对象和数组 372 16.1 JavaScript 函数 .372 16.1.1 定义函数 372 16.1.2 返回一个值374 16.1.3 返回一个数组 376 16.2 JavaScript 对象 .377 16.2.1 声明类 .377 16.2.2 创建对象 379 16.2.3 访问对象 379 16.2.4 prototype 关键字 380 16.3 JavaScript 数组 .383 16.3.1 数字数组 383 16.3.2 关联数组 385 16.3.3 多维数组 386 16.3.4 使用数组方法 387 16.4 思考题 393 第17 章 JavaScript 和PHP 数据验证及错误处理 394 17.1 使用JavaScript 验证用户输入 394 17.1.1 validate.html 文档(**部分) 395 17.1.2 validate.html 文档(第二部分) 397 17.2 正则表达式 .401 17.2.1 通过元字符匹配 .401 17.2.2 字符模糊匹配 401 17.2.3 使用括号分组 403 17.2.4 字符类 .403 17.2.5 指明范围 404 17.2.6 否定 404 17.2.7 几个更复杂的例子 404 17.2.8 元字符小结407 17.2.9 通用修饰符409 17.2.10 在JavaScript 中使用正则表达式 .410 17.2.11 在PHP 中使用正则表达式 .410 17.3 PHP 验证之后重新显示表单 411 17.4 思考题 417 第18 章 使用异步通信 419 18.1 什么是异步通信? 420 18.2 使用XMLHttpRequest 420 18.2.1 **异步程序 420 18.2.2 把POST 方法换成GET 方法 424 18.2.3 发送XML 请求 426 18.2.4 使用框架处理异步通信 430 18.3 思考题 431 第19 章 CSS 入门 432 19.1 导入样式表 .433 19.1.1 在HTML 中导入CSS .434 19.1.2 内嵌样式 434 19.2 使用 ID .434 19.3 使用类 435 19.4 使用分号 435 19.5 CSS 规则 435 19.5.1 声明多个属性 436 19.5.2 使用注释 437 19.6 样式类型 437 19.6.1 默认样式 437 19.6.2 用户样式 438 19.6.3 外部样式表438 19.6.4 内部样式 439 19.6.5 行内样式 439 19.7 CSS 选择符 .439 19.7.1 类型选择符439 19.7.2 后代选择符439 19.7.3 子代选择符441 19.7.4 ID 选择符 442 19.7.5 类选择符 443 19.7.6 属性选择符443 19.7.7 通用选择符444 19.7.8 成组选择 444 19.8 CSS 层叠规则 445 19.8.1 样式表创建方 445 19.8.2 样式表创建方法 .446 19.8.3 样式表选择符 446 19.9 div 和 span 元素之间的区别 449 19.10 度量单位 451 19.11 字体排版 453 19.11.1 font-family 453 19.11.2 font-style 453 19.11.3 font-size 454 19.11.4 font-weight .454 19.12 管理文本样式 .455 19.12.1 装饰效果 .455 19.12.2 间距 455 19.12.3 对齐方式 .456 19.12.4 大小写转换 .456 19.12.5 缩进 457 19.13 CSS 颜色 457 19.13.1 颜色字符串的简写形式 458 19.13.2 渐变 458 19.14 定位元素 460 19.14.1 **定位 .460 19.14.2 相对定位 .461 19.14.3 固定定位 .461 19.15 伪类 .463 19.16 简写规则 465 19.17 盒模型和布局 .466 19.17.1 设置外边距 .466 19.17.2 添加边框 .468 19.17.3 调整内边距 .469 19.17.4 对象内容 .471 19.18 思考题 .471 第20 章 CSS3 新增特性 472 20.1 属性选择符 .473 20.2 box-sizing 属性 .475 20.3 CSS3 背景 475 20.3.1 background-clip 属性 475 20.3.2 background-origin 属性 477 20.3.3 background-size 属性 477 20.3.4 使用auto 值 478 20.3.5 多个背景 478 20.4 CSS3 边框 480 20.4.1 border-color 属性 480 20.4.2 border-radius 属性 .481 20.5 盒子投影 483 20.6 元素溢出 484 20.7 多栏布局 484 20.8 颜色和不透明度 486 20.8.1 HSL 颜色 486 20.8.2 HSLA 颜色 486 20.8.3 RGB 颜色 487 20.8.4 RGBA 颜色 487 20.8.5 opacity 属性 .488 20.9 文本效果 488 20.9.1 text-shadow 属性 488 20.9.2 text-overflow 属性 .488 20.9.3 word-wrap 属性 489 20.10 Web 字体 490 20.11 变形 .492 20.12 过渡 .494 20.12.1 要过渡的属性 495 20.12.2 过渡持续时间 495 20.12.3 过渡延迟 .495 20.12.4 过渡时序 .495 20.12.5 简写句法 .496 20.13 思考题 .498 第21 章 通过JavaScript 访问CSS 499 21.1 再谈getElementById 函数 499 21.1.1 O 函数 .499 21.1.2 S 函数 500 21.1.3 C 函数 .501 21.1.4 引入这些函数 502 21.2 通过JavaScript 访问CSS 属性 .502 21.2.1 常用属性 503 21.2.2 其他属性 504 21.3 行内JavaScript .506 21.3.1 this 关键字 506 21.3.2 在