描述
开 本: 32开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302473763
本书共分22章,涉及的主要基础内容包括:类型、变量、常数与运算符,流程控制与数组,函数,文件访问,GD绘图与图像处理,例外与错误处理,面向对象,在网页之间传递信息,使用Ajax,jQuery Mobile移动版网页,MySQL数据库与SQL查询,访问MySQL数据库等;另外,本书还给出了几大应用范例,包括移动商品目录、Google地图应用网站、文件上传、留言板与讨论组、在线寄信服务、会员管理系统、在线投票系统、购物车和网络相册。
目 录
第1章 开始编写PHP程序 1
1.1 认识动态网页技术 2
1.1.1 浏览器端Scripts 2
1.1.2 服务器端Scripts 3
1.2 认识PHP、Apache与MySQL 4
1.3 建立PHP、Apache与MySQL运行环境 6
1.3.1 安装AppServ 7
1.3.2 测试安装结果与切换PHP版本 12
1.3.3 查看PHP说明文件 14
1.4 PHP程序的编辑工具 15
1.5 安装本书范例程序 18
1.6 编写个PHP程序 19
1.6.1 将PHP程序嵌入HTML文件 19
1.6.2 将PHP程序放在外部文件中 21
1.7 PHP程序代码的编写惯例 23
学习评估 25
第2章 类型、变量、常数与运算符 27
2.1 类型 28
2.1.1 整数 28
2.1.2 浮点数 29
2.1.3 布尔 29
2.1.4 字符串 29
2.1.5 NULL 32
2.1.6 资源 32
2.2 类型转换 32
2.2.1 检查类型 33
2.2.2 明确转换类型 33
2.3 变量 34
2.3.1 变量的命名规则 34
2.3.2 变量的存取方式 35
2.3.3 变量的作用域 36
2.3.4 变量处理函数 36
2.4 常数 36
2.4.1 用户自定义常数 37
2.4.2 预定义的常数 37
2.5 运算符 38
2.5.1 算术运算符 38
2.5.2 字符串运算符 39
2.5.3 递增/递减运算符 39
2.5.4 比较运算符 40
2.5.5 位运算符 41
2.5.6 逻辑运算符 41
2.5.7 赋值运算符 42
2.5.8 条件运算符 43
2.5.9 错误控制运算符 43
2.5.10 执行运算符 43
2.5.11 运算符的优先级 44
2.6 PHP的输出函数 45
学习评估 47
第3章 流程控制与数组 49
3.1 认识流程控制 50
3.2 if 50
3.2.1 if:若…就…(单向选择) 50
3.2.2 if…else…:若…就…否则…(双向选择) 52
3.2.3 if…elseif…:若…就…否则 若…(多向选择) 53
3.3 switch 56
3.4 for 58
3.5 条件循环 60
3.5.1 while 60
3.5.2 do…while 61
3.5.3 break与continue语句 62
3.5.4 exit()函数 63
3.6 foreach 63
3.7 认识数组 64
3.8 一维数组 66
3.8.1 建立一维数组 66
3.8.2 存取一维数组 66
3.9 多维数组 69
3.9.1 建立多维数组 69
3.9.2 存取多维数组 70
3.10 数组运算符 72
3.11 数组相关函数 73
学习评估 77
第4章 函数 79
4.1 认识函数 80
4.2 自定义函数 80
4.3 函数的参数 83
4.3.1 传值调用 83
4.3.2 传址调用 84
4.3.3 设置参数的默认值 85
4.3.4 可变长参数列表 85
4.3.5 标量类型声明 86
4.4 函数的返回值 87
4.5 局部变量V.S. 全局变量 88
4.6 静态变量 90
4.7 匿名函数 92
4.8 可变函数 92
4.9 实用的PHP内部函数 93
4.9.1 数学常数 94
4.9.2 数学函数 94
4.9.3 日期时间函数 96
4.9.4 字符串函数 99
学习评估 103
第5章 文件访问 105
5.1 访问服务器端的路径 106
5.1.1 获取文件名 106
5.1.2 获取路径信息 106
5.1.3 获取路径 107
5.2 访问服务器端的文件夹 107
5.2.1 创建文件夹 107
5.2.2 获取当前的工作文件夹 108
5.2.3 切换当前的工作文件夹 108
5.2.4 删除文件夹 108
5.2.5 判断路径是否为文件夹 109
5.2.6 判断文件夹是否存在 109
5.2.7 变更文件夹的权限 110
5.2.8 获取文件夹的父文件夹名称 110
5.2.9 获取文件夹所包含的文件名及子文件夹名称 110
5.3 访问服务器端的文件 111
5.3.1 判断文件是否存在 111
5.3.2 判断指定的路径是否为文件 111
5.3.3 复制文件 111
5.3.4 删除文件 112
5.3.5 变更文件名 112
5.3.6 获取文件属性 112
5.4 读取服务器端的文本文件 113
5.4.1 使用fread()函数读取文本文件 113
5.4.2 使用fgets()函数读取文本文件 116
5.4.3 使用file_get_contents()函数读取文本文件 116
5.5 写入服务器端的文本文件 117
5.5.1 使用fwrite()、fputs()函数写入文本文件 117
5.5.2 使用file_put_contents()函数写入文本文件 119
学习评估 120
第6章 GD绘图与图像处理 121
6.1 GD绘图 122
6.1.1 创建空白图像 122
6.1.2 分配颜色 122
6.1.3 绘制线条、图形与文字 123
6.1.4 输出图像 130
6.1.5 释放内存 131
6.2 图像函数 132
6.2.1 获取图像的大小与格式 132
6.2.2 读取外部图像 134
学习评估 135
第7章 例外与错误处理 137
7.1 例外 138
7.2 错误 141
7.3 PHP 7的错误处理 144
学习评估 146
第8章 面向对象 147
8.1 认识面向对象 148
8.2 类与对象 149
8.2.1 定义类 149
8.2.2 创建对象 150
8.2.3 static关键词 151
8.2.4 类常数 152
8.2.5 构造函数 153
8.2.6 析构函数 154
8.2.7 比较对象 156
8.2.8 匿名类 157
8.3 继承 158
8.3.1 定义子类 159
8.3.2 设置成员的访问级别 160
8.3.3 覆盖继承自父类的方法 163
8.3.4 调用父类内被覆盖的方法 164
8.3.5 抽象方法 164
8.3.6 子类的构造函数与析构函数 165
8.4 命名空间 168
学习评估 170
第9章 在网页之间传递信息 172
9.1 搜集网页上的数据 173
9.1.1 建立表单 173
9.1.2 表单的后端处理 179
9.2 HTTP Header 186
9.2.1 网页重定向 187
9.2.2 用户与密码认证 188
9.2.3 自动重定向到PC版或移动版网页 190
9.3 Cookie 191
9.3.1 写入Cookie 192
9.3.2 读取Cookie 194
9.4 Session 195
9.4.1 访问Session 196
9.4.2 Session相关函数 197
学习评估 198
第10章 使用Ajax 200
10.1 认识Ajax 201
10.2 编写导入Ajax技术的动态网页 202
第11章 jQuery Mobile移动版网页 210
11.1 认识jQuery Mobile 211
11.2 编写jQuery Mobile移动版网页 212
11.3 主题 216
11.4 超链接 217
11.4.1 内部链接 218
11.4.2 外部链接 220
11.4.3 外部链接 221
11.5 对话框 223
11.6 按钮 225
11.6.1 建立按钮 225
11.6.2 设置按钮的图标 225
11.6.3 设置按钮的主题 226
11.6.4 设置按钮的特殊效果 226
11.6.5 设置控件组 227
11.7 工具栏 227
11.7.1 页首行 227
11.7.2 页尾行 228
11.8 导航条 229
11.9 可折叠区块 231
11.10 可折叠区块群组 231
11.11 列表视图 232
11.11.1 创建列表视图 232
11.11.2 设置分隔线 234
11.11.3 设置计数气泡与侧边内容 234
11.11.4 设置搜索功能 235
11.11.5 设置图标与缩略图 236
11.12 表单 237
11.12.1 字段容器 238
11.12.2 文字输入字段 239
11.12.3 日期时间输入字段 240
11.12.4 多行文本框 241
11.12.5 拨动式切换开关 241
11.12.6 下拉式菜单 243
11.12.7 复选框 244
11.12.8 单选按钮 246
11.12.9 读取表单字段的数据 247
第12章 MySQL数据库与SQL查询 250
12.1 认识数据库 251
12.2 使用phpMyAdmin管理MySQL数据库 253
12.2.1 创建数据库 253
12.2.2 创建数据表 255
12.2.3 添加记录 260
12.2.4 导出数据库 262
12.2.5 删除数据库或数据表 264
12.2.6 导入数据库 264
12.3 SQL语法 266
12.3.1 SELECT指令(筛选数据) 268
12.3.2 INSERT指令(添加记录) 273
12.3.3 UPDATE指令(更新记录) 274
12.3.4 DELETE指令(删除记录) 274
学习评估 274
第13章 访问MySQL数据库 276
13.1 PHP与MySQL数据库 277
13.2 建立与关闭数据连接 279
13.2.1 建立数据连接 279
13.2.2 关闭数据连接 281
13.3 访问MySQL数据库服务器 281
13.3.1 获取MySQL客户端函数库的版本信息 281
13.3.2 获取MySQL主机的相关信息 282
13.3.3 获取MySQL数据库协议的版本信息 283
13.3.4 获取MySQL数据库服务器的版本信息 284
13.3.5 获取存取MySQL数据库服务器的错误信息 285
13.4 执行SQL指令 285
13.4.1 使用mysqli_select_db()函数打开数据库 286
13.4.2 使用mysqli_query()函数执行SQL指令 287
13.4.3 获取执行SQL查询被影响的记录笔数或字段数目 289
13.5 获取字段信息 290
13.5.1 使用mysqli_fetch_field_direct()函数获取字段信息 290
13.5.2 使用mysqli_fetch_field()函数获取字段信息 293
13.5.3 使用mysqli_field_seek()函数移动字段指针 294
13.6 获取记录内容 294
13.6.1 使用mysqli_fetch_row()函数获取记录内容 294
13.6.2 使用mysqli_fetch_array()函数获取记录内容 296
13.6.3 使用mysqli_fetch_assoc()函数获取记录内容 298
13.6.4 使用mysqli_fetch_object()函数获取记录内容 299
13.6.5 使用mysqli_data_seek()函数移动记录指针 299
13.7 分页浏览 300
学习评估 303
第14章 移动商品目录 304
14.1 设计移动版网站界面 305
14.2 完整的程序代码清单 306
第15章 Google地图应用网站 311
15.1 认识Google API 312
15.2 在网页上加入Google Maps 312
第16章 文件上传 317
16.1 认识文件上传 318
16.1.1 前置准备工作 318
16.1.2 编写前端的文件上传界面 319
16.1.3 编写后端的处理程序 320
16.2 上传单一文件 322
16.3 上传多个文件 325
第17章 留言板与讨论组 328
17.1 留言板 329
17.1.1 组成网页的文件列表 330
17.1.2 网页的运行流程 331
17.1.3 必须具备的背景知识 331
17.1.4 完整的程序代码列表 332
17.2 讨论组 336
17.2.1 组成网页的文件列表 338
17.2.2 网页的运行流程 339
17.2.3 必须具备的背景知识 340
17.2.4 完整的程序代码列表 340
第18章 在线寄信服务 348
18.1 认识在线寄信服务 349
18.2 使用mail()函数发送邮件 350
18.2.1 传送纯文本邮件 350
18.2.2 发送HTML格式的邮件 352
18.2.3 发送邮件给副本及密件抄送收件人 353
18.2.4 发送有附加文件的邮件 355
18.3 无法发送附加文件的在线寄信服务 358
18.4 能够发送附加文件的在线寄信服务 361
第19章 会员管理系统 365
19.1 认识会员管理系统 366
19.2 组成网页的文件列表 368
19.3 网页的运行流程 369
19.4 必须具备的背景知识 370
19.5 完整的程序代码清单 370
第20章 在线投票系统 391
20.1 认识在线投票系统 392
20.2 组成网页的文件列表 392
20.3 网页的运行流程 393
20.4 必须具备的背景知识 394
20.5 完整的程序代码清单 394
第21章 购物车 403
21.1 认识购物车 404
21.2 组成网页的文件列表 406
21.3 网页的运行流程 407
21.4 必须具备的背景知识 408
21.5 完整的程序代码清单 409
第22章 网络相册 422
22.1 认识网络相册 423
22.2 组成网页的文件列表 427
22.3 网页的运行流程 428
22.4 完整的程序代码清单 430
附录A HTML语法教学 453
(PDF电子文件,见下载资源)
附录B HTML标签与属性速查 475
(PDF电子文件,见下载资源)
附录C HTML特殊字符表 498
(PDF电子文件,见下载资源)
从本章节可以学习到:※ 认识在线投票系统※ 组成网页的文件列表※ 网页的运行流程※ 必须具备的背景知识※ 完整的程序代码清单20.1 认识在线投票系统你想设计一个在线投票系统吗?本章可以让你如愿哦!你可以选择自己喜欢的明星,然后输入身份证号码,单击“投票”按钮,即可完成投票,如图20-1所示,若里面没有你喜欢的明星,可以单击“推荐候选人”按钮来推荐候选人,如图20-2所示,同时你也可以单击“查看投票结果”按钮来查看投票结果,如图20-3所示。 图20-1 图20-2 图20-320.2 组成网页的文件列表这个在线投票系统存放在网络下载资源的 samplesch20 文件夹中,总共用到如表20-1所示的文件。表20-1 在线投票系统用到的文件文件名 说明4个JPEG图像文件 其中3个JPEG图像文件用来作为各个网页的标题图像,另一个JPEG图像文件用来作为直方图index.php 这是在线投票系统的首页,浏览者可以在此投票,执行界面如图20-1所示recommend.htm 这是推荐候选人的主程序,执行界面如图20-2所示recommend.php 这是推荐候选人网页的后端处理程序,它会检查你所推荐的人是否已经在候选人名单中,若候选人已经存在,就不用推荐了result.php 这是用来显示投票结果的网页,执行界面如图20-3所示vote.php 当浏览者在 单击“投票”时会执行这个程序,它负责将被投票人的得票数加1vote数据库 这个在线投票系统使用了名称为vote的数据库,里面包含candidate和id_number两个数据表,用来存储候选人数据及投票人的身份证号码在这个在线投票系统中,我们使用了名称为vote的数据库,里面包含candidate和id_number数据表,用来存储候选人数据及投票人的身份证号码,其字段结构如表20-2所示。你可以自己建立数据库或导入本书为你准备的数据库备份文件(位于下载资源的databasevote.sql文件夹中)。(本范例程序以中国台湾地区的身份证号码为例)表20-2 candidate数据表字段结构字段名 数据类型 长度 主键 说明id INT – ? 编号字段自动编号(auto_increment)Name VARCHAR 20 ? 候选人姓名字段introduction TEXT – ? 候选人简介字段score INT – ? 分数字段表20-3 id_number数据表字段结构字段名 数据类型 长度 主键 说明Id VARCHAR 10 ? 身份证号码字段20.3 网页的运行流程网页的运行流程如图20-4所示。 图20-420.4 必须具备的背景知识? 首先,必须熟悉HTML语法或其他网页编辑软件。? 其次,必须了解表单的制作方式及如何读取表单数据。? 其三,基本的JavaScript语法,我们将使用它来验证身份证号码。? 后,必须熟悉SQL语法及如何访问MySQL数据库。20.5 完整的程序代码清单 index.php这是在线投票系统的首页,浏览者可以在此投票,运行时的网页显示界面如图20-1所示。ch20index.php001:002:003: 004:
111: 112: 113: 115: 117:
118: 119: 120: ? 007 ~ 072:check_data()函数用来审核投票者输入的身份证号码是否正确,以及判断投票者是否选择了候选人,必须通过这两项验证才能继续执行。? 009:获取表单中id字段的数据,然后赋值给变量id。? 011 ~ 013:建立三个数组来存放验证身份证号码的数据。? 016:调用toUpperCase()函数将变量id的英文字母转换成大写。? 019 ~ 023:这个部分用来验证身份证号码是否有10个字符,若没有10个字符,就显示“身份证号码共有10位”。? 026 ~ 031:检查身份证号码的个字符是否是大写的英文字母,若不是就显示“身份证号码位是英文字母”。? 034 ~ 052:身份证号码的命名规则除了要有10位、首字符为大写英文字母之外,还有一个非常重要的命名规则,就是身份证号码的第2 ~ 10位必须为数字,第039 ~ 043行就是用来验证此规则的。此外,我们还必须套用身份证验证公式计算出一个数字。第045行的变量sum就用来存放这个数字,而且这个数字必须能被10整除,第048 ~ 052行就是用来验证此规则的。必须通过所有条件才算是一个合法的身份证号码。? 055 ~ 069:这个部分用来验证投票者是否选择了候选人。 vote.php当浏览者在网页的首页 中单击“投票”按钮时会执行这个投票程序,它负责将投票者的身份证号码写入数据库,并把被投票人的得票数加1。ch20vote.php01:<?php02: require_once("dbtools.inc.php");03: header("Content-type: text/html; charset=utf-8");04: //获取表单数据05: $id = strtoupper($_POST["id"]);06: $name = $_POST["name"]; 07:08: //建立数据连接09: $link = create_connection();10: //检查身份证号码是否投过票11: $sql = "SELECT * FROM id_number Where id = '$id'";12: $result = execute_sql($link, "vote", $sql);13:14: //若身份证号码已投过票,就显示信息告知浏览者不能重复投票15: if(mysqli_num_rows($result)!= 0)16: {17: //释放内存空间18: mysqli_free_result($result);19: echo "”;20: echo “alert(’您已经参加过本次活动了’);”;21: echo “history.back();”;22: echo “”;23: exit();24: }25: //否则将身份证号码写入数据库并将被投票人的得票数加126: else27: {28: //释放内存空间29: mysqli_free_result($result);30:31: //将浏览者的身份证号码写入id_number数据表,表示已投过票32: $sql = “INSERT INTO id_number(id)VALUES(’$id’)”;33: $result = execute_sql($link, “vote”, $sql);34:35: //将得票数加136: $sql = “UPDATE candidate SET score = score 1 WHERE name = ‘$name'”;37: $result = execute_sql($link, “vote”, $sql);38: }39:40: //关闭数据连接41: mysqli_close($link);42: //重定向到投票结果网页result.php43: header(”location:result.php”);44:?>? 05 ~ 06:获取首页 表单中的身份证号码(id)及候选人(name),然后调用strtoupper()函数将变量 $id的英文字母转换成大写。? 11 ~ 38:使用身份证号码来验证投票人是否投过票,变量id用来与vote数据库内id_number数据表的id字段进行对比,若有一样的身份证号码,表示已经投过票,就不能再投票;若没有一样的身份证号码,第32、33行将变量id的值写入vote数据库内id_number数据表的id字段,这个方法可以防止同一人多次投票,以防投票结果被灌水;第36、37行用来将被投票者的票数加1,并更新到candidate数据库。 result.php这是用来显示投票结果的网页,运行时网页显示界面如图20-3所示。ch20result.php01:02:03: 04:
recommand.php 这是推荐候选人网页的表单处理程序,它会检查你所推荐的人是否已经在候选人名单中,若候选人已经存在,就不用推荐了。ch20recommand.php<?php require_once("dbtools.inc.php"); header("Content-type: text/html; charset=utf-8");
//获取表单数据,包括候选人姓名和候选人介绍 $name = $_POST[“name”]; $introduction = $_POST[“introduction”];
//建立数据连接 $link = create_connection();
//执行SELECT指令来选择候选人数据 $sql = “SELECT * FROM candidate WHERE name=’$name'”; $result = execute_sql($link, “vote”, $sql); //若被推荐人不在候选人名单,就将候选人数据写入数据库 if(mysqli_num_rows($result)== 0) { //释放内存空间 mysqli_free_result($result);
//将候选人数据写入vote数据库的candidate数据表 $sql = “INSERT INTO candidate(name , introduction , score) VALUES(’$name’, ‘$introduction’, 0)”; $result = execute_sql($link, “vote”, $sql);
//重定向到首页 header(”location:index.php”); } //否则显示被推荐人已经是候选人的信息 else { echo “
您推荐的人已经在候选人名单,不需要再推荐。
“;
echo “
“; echo “
“; }
//关闭数据连接 mysqli_close($link);?>
评论
还没有评论。