动态网站开发从入门到实践:PHP 8+MySQL 8
定 价:69 元
本书以动态网站开发实践为目的,较为详细地介绍了PHP 8及相关技术,内容包括PHP入门、HTML基础、CSS基础、数据与变量、运算符与流程控制、PHP函数、字符串处理、正则表达式、使用数组、面向对象编程、MySQL数据库基础、PHP访问MySQL数据库、表单与会话、文件处理及管理员子系统总括。本书立足基本理论和方法,注重实践与应用环节。对概念、原理和方法的描述力求准确、严谨,对例子和实例力求代码规范、面向实际应用。本书可作为普通高等院校计算机、软件工程等相关专业的教材,也可作为动态网站开发者学习和使用PHP技术的参考书。
本书立足基本理论和方法、注重实践与应用环节。对概念、原理和方法的描述力求准确、严谨,对范例力求代码规范、面向实际应用。本书可作为普通高等院校计算机及相关专业的教材,也可作为Web应用开发者学习和使用PHP技术的参考书。
PHP于1995年推出了第一个版本,并逐渐成为动态网站及Web应用的一种主要开发语言,它以简单性、开放性、低成本、安全性和适应性等受到Web程序员的青睐。2021年11月25日,PHP 8.1.0正式发布。随着PHP版本的推陈出新,一些新特性被引入,有些特性被完善;但同时,一些特性被废弃,有些特性经过改进已不再向后兼容。本书采用的主要软件版本是PHP 8.1.5、MySQL 8.0.28,书中介绍的所有程序代码都在此环境下运行通过。本书以动态网站开发实践为目的,较为详细地介绍了PHP 8及相关技术,包括HTML、CSS、MySQL等。全书立足基本理论和方法,注重实践与应用环节。对概念、原理和方法的描述力求准确、严谨,对例子代码力求精简、规范。除第16章外,本书各章的最后都配有精选习题,便于读者复习、巩固、练习与提高。本书引入了一个较为完整的动态网站教务选课系统。系统分为管理员子系统和学生教师子系统两部分。本书正文的各章实战节及第16章以模块化和面向对象方法为指导思想,介绍了管理员子系统的开发。学生教师子系统被设计成实验题,以附录形式放置在全书最后,供读者练习。为了便于学习,本书使用了一些符号和特殊处理,在此进行说明。(1) 代码左边的行号是为了引用和讲述方便而增加的,不是代码的组成部分。(2) 在语言成分的语法格式描述中。 符号< >表示该项由程序员按规则指定或定义。 符号[]表示该项为可选项。 符号[]表示该项可不重复或重复多次。 符号|表示可以从两项或多项连接起来的选项中选中一项。为标明第一项的开始处及最后一项的结尾处,可用符号{}将这些选项括起来。需要注意的是,这些符号在有些语言成分中具有特定的作用,例如,<>在HTML中表示标签的开始和结束;在SQL SELECT语句中表示所有列;[]在PHP中表示访问数组元素;{ }在PHP中表示块语句的开始和结束,在CSS规则中表示声明块的开始和结束等。读者在阅读时需要根据上下文判断每种符号的具体含义。为了便于学习,本书提供相关的教学资源,包括教学课件、视频、所有例子和实战的源代码以及习题和实验题的参考答案。欢迎读者从清华大学出版社网站下载和使用。由于作者水平有限,书中难免有疏漏和不足之处,敬请广大读者批评指正。
作者2024年11月
第1章PHP入门/11.1PHP及其版本演变11.1.1什么是PHP11.1.2版本演变21.2Web基础31.2.1URL31.2.2HTTP31.2.3HTML51.3在Web页中嵌入PHP代码61.3.1PHP标签61.3.2嵌入PHP代码块71.4输出HTML81.5代码注释91.6PHP工作原理101.7运行环境与开发环境101.7.1搭建运行环境111.7.2搭建开发环境151.8使用Apache NetBeans IDE151.8.1界面组成151.8.2基本操作16习题118第2章HTML基础/192.1概念与基本元素192.1.1HTML文档192.1.2HTML元素202.1.3若干基本元素212.2列表232.2.1无序列表232.2.2有序列表242.2.3定义列表242.3表格252.3.1简单的表格252.3.2跨行与跨列252.3.3标题、表头、表体和表脚262.3.4边框与单元格间距262.3.5为列指定CSS样式282.4表单292.4.1表单元素form292.4.2input元素302.4.3为控件元素指定标签302.4.4textarea元素312.4.5选择列表32习题232第3章CSS基础/343.1CSS规则343.2CSS选择器353.2.1基本选择器353.2.2层次选择器373.2.3伪类选择器383.2.4伪元素选择器393.3使用CSS403.3.1定义和使用样式表403.3.2层叠处理413.4框模型与定位模式433.4.1框模型433.4.2相关术语443.4.3框的定位模式443.5CSS属性和属性值453.5.1字体和文本453.5.2颜色和背景473.5.3尺寸、边距和边框483.5.4定位与浮动503.5.5其他属性513.6实战: 浮动框与行内级块框523.6.1管理员子系统页头523.6.2管理员子系统登录表单53习题355第4章数据与变量/574.1PHP数据类型574.1.1标量类型574.1.2复合类型624.1.3null类型644.2类型转换654.2.1自动类型转换654.2.2强制类型转换664.3变量与常量684.3.1PHP变量684.3.2变量赋值684.3.3变量作用域694.3.4可变变量724.3.5常量724.4错误与错误报告734.4.1错误类型734.4.2错误报告机制744.5实战: 使用Heredoc字符串754.5.1输出HTML文档的前缀和后缀754.5.2呈现页头和页脚764.5.3动态登录表单77习题478第5章运算符与流程控制/805.1运算符805.1.1算术运算符805.1.2字符串运算符825.1.3比较运算符825.1.4逻辑运算符835.1.5位运算符845.1.6赋值运算符855.1.7其他运算符865.2表达式875.3流程控制895.3.1语句与语句块895.3.2选择结构905.3.3循环结构925.3.4跳转语句955.4包含文件965.4.1包含文件语句965.4.2包含文件位置995.5实战: 创建动态水平导航栏99习题5100第6章PHP函数/1036.1函数的声明与调用1036.1.1函数声明1036.1.2函数调用1046.2类型声明1046.2.1类型1046.2.2类型转换1066.3函数参数1066.3.1形参与实参1066.3.2参数的默认值1076.3.3名称参数1086.3.4可变长参数1086.4函数返回值1096.5变量函数1106.6匿名函数1116.6.1匿名函数作为变量值1116.6.2用作callable类型参数的值1136.7日期时间函数1136.8实战: 管理员子系统的各种表单1166.8.1课程表单1166.8.2选择学期表单1186.8.3添加开课信息表单119习题6121第7章字符串处理/1257.1长度与去空1257.1.1字符串长度1257.1.2字符串去空1267.2大小写转换与比较1277.2.1大小写转换1277.2.2字符串比较1277.3子串处理1287.3.1获取子串1287.3.2查找子串1297.3.3替换子串1307.4分隔和连接字符串1327.5格式化输出1337.6字符串特殊处理135习题7137第8章正则表达式/1408.1字符类1408.2元字符与转义序列1418.3选项模式与子模式1438.4量词1448.5断言1458.6PHP模式匹配函数1468.7实战: 使用正则表达式1508.7.1检测登录数据1518.7.2检测课程数据151习题8152第9章使用数组/1549.1创建和初始化数组1549.2操作数组元素1559.2.1访问数组元素1559.2.2修改、添加或删除数组元素1569.2.3在数组头部或尾部操作元素1579.3遍历数组1589.3.1数组指针1589.3.2使用for语句遍历数组1599.3.3使用while语句遍历数组1599.3.4用回调函数处理数组各元素1599.4数组排序1609.4.1sort函数1609.4.2asort和ksort函数1619.4.3降序排序1629.4.4随机排序和反向排序1629.4.5用户自定义排序1639.5其他数组操作1639.5.1计数与统计1639.5.2变量与数组元素的转换1649.6实战: 呈现数据表格1669.6.1课程信息表格1669.6.2教师信息表格1689.6.3开课信息列表169习题9171第10章面向对象编程(上)/17410.1类的定义与对象的创建17410.1.1概念17410.1.2定义类17510.1.3创建和使用对象17610.2访问控制17810.2.1访问修饰符17810.2.2魔术方法__get和__set17910.3构造方法与析构方法18110.3.1构造方法18110.3.2只读型实例变量18210.3.3析构方法18210.4静态类成员18310.4.1静态变量与静态方法18310.4.2类常量18410.5类的自动加载18510.6实战: 翻页导航栏18610.6.1定义翻页导航栏类18610.6.2定义并注册类自动加载函数188习题10189第11章面向对象编程(下)/19211.1子类19211.1.1定义子类19211.1.2继承构造方法19311.1.3类类型的兼容性19411.1.4检测类型19411.2覆盖19611.2.1变量覆盖19611.2.2方法覆盖19611.2.3签名兼容性原则19811.3抽象类和接口19911.3.1抽象类19911.3.2定义接口20111.3.3实现接口20211.4例外处理20311.4.1概述20311.4.2捕捉例外205习题11208第12章MySQL数据库基础/21212.1登录MySQL服务器21212.2数据库的创建与删除21312.2.1创建数据库21312.2.2选择当前数据库21412.2.3显示数据库列表21412.2.4删除数据库21412.3MySQL数据类型21512.3.1数值型21512.3.2日期和时间型21612.3.3字符串型21812.4表的创建与删除22012.4.1创建表22012.4.2显示表列表和表结构22312.4.3删除表22412.5实战: 创建选课管理数据库22412.5.1创建数据库22412.5.2创建表22512.6数据的插入、更新和删除22712.6.1插入数据22812.6.2更新数据22912.6.3删除数据22912.7查询23012.7.1SELECT语句23012.7.2指定列23012.7.3选择行23112.7.4使用谓词23212.7.5排序查询结果23312.7.6分组汇总23312.7.7使用子查询23412.7.8连接查询236习题12237第13章PHP访问MySQL数据库/23813.1建立与MySQL服务器的连接23813.2MySQLi错误报告模式23913.2.1设置报告模式23913.2.2创建连接对象时的错误处理24013.3访问MySQL数据库24113.4处理查询结果24213.5事务管理24513.6使用预处理语句24713.6.1创建预处理语句24713.6.2执行预处理语句24813.6.3处理查询结果25013.7实战: 数据库访问应用25213.7.1定义数据库访问类25213.7.2验证登录用户身份25213.7.3添加课程记录25313.7.4分页呈现数据25413.7.5构建动态选项代码25613.7.6开课信息的获取与维护258习题13259第14章表单与会话/26114.1表单处理26114.1.1提交表单26114.1.2获取表单数据26214.1.3检验表单数据26514.2会话管理26814.2.1Cookie26814.2.2基于Cookie的会话机制27014.2.3启动会话27014.2.4会话变量27114.3页面跳转与重定向27214.4实战: 访问请求参数27414.4.1addSchedules函数27414.4.2退出系统275习题14275第15章文件处理/27715.1常用的文件操作函数27715.1.1创建目录与文件27715.1.2检测目录和文件27815.1.3读写文件27915.2流与文件操作28115.2.1打开与关闭文件28115.2.2向文件写出数据28215.2.3从文件读入数据28315.2.4移动与检测文件指针28415.3文件上传28515.3.1文件上传表单28515.3.2获取上传文件28515.4文件下载288习题15291第16章管理员子系统总括/29316.1子系统需求概述29316.1.1用户登录29316.1.2浏览教师信息29316.1.3添加课程29316.1.4维护开课信息29516.1.5页面和视图29716.2页面的抽象超类29716.2.1WebPage抽象类29716.2.2AdminPage抽象类29816.2.3TaskPage抽象类29916.2.4自动加载设置30016.3请求处理视图关系表30016.4具体页面类的设计和实现30216.4.1设计和实现的规则30216.4.2登录页面类30216.4.3浏览教师信息页面类30416.4.4添加课程页面类30616.4.5维护开课信息页面类30916.5具体页面类的调用312附录A上机实验/315A.1学生教师子系统需求概述315A.1.1登录与注册315A.1.2教师子系统317A.1.3学生子系统320A.2学生教师子系统主要模块实现322A.2.1实验1: 页头和页脚322A.2.2实验2: 动态登录与注册表单323A.2.3实验3: 动态水平导航栏324A.2.4实验4: 检测表单数据325A.2.5实验5: 呈现数据表格326A.2.6实验6: 录入成绩327A.2.7实验7: 选课328A.2.8实验8: 文件上传与下载应用331A.3学生教师子系统集成332A.3.1总体要求332A.3.2登录与注册的设计与实现333A.3.3教师子系统的设计与实现335A.3.4学生子系统的设计与实现337参考文献/340