ImageVerifierCode 换一换
格式:PPTX , 页数:99 ,大小:1.89MB ,
文档编号:3372994      下载积分:28 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-3372994.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(三亚风情)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(PHP网站开发项目式教程任务8课件.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

PHP网站开发项目式教程任务8课件.pptx

1、任务八 接收、阅读、删除邮件n分页浏览邮件n打开并阅读邮件n删除邮件8.1 分页浏览邮件8.1.1 收邮件功能描述n在收邮件界面中需要实现以下描述的功能任务:n(1)能够获取当前用户收件箱中尚未设置删除标志的邮件总数并显示出来;n(2)能够实现邮件的分页浏览功能,输出“首页、上页、下页、尾页”的文本或者超链接,若当前显示的是第一页中的邮件信息,则“首页”和“上页”链接不可用,若当前显示的是最后一页中的邮件信息,则“下页”和“尾页”链接不可用;n(3)能够根据用户点击的页面超链接进行换页,例如,若当前正在显示的是第2页,点击“下页”超链接后,能够将页码3提交给服务器,以打开下页中的邮件信息;若此

2、时点击“上页”超链接,能够将页码1提交给服务器,以打开上页中的邮件信息;8.1.1 收邮件功能描述n(4)能够通过查询语句中的限制子句limit获取每页中指定的邮件,能够使用mysqli_fetch_array()函数从查询结果记录集中获取一条记录(即一封邮件的所有信息),然后使用数组形式将每封邮件的发件人、主题、收发日期以及邮件中是否有附件等信息显示到邮件列表中,若是有附件,就在指定列中显示附件小图标flag-1.jpg;n(5)点击任意邮件中的发件人或者邮件主题信息时,能够将当前邮件的emailno列值(即邮件序号)提交给服务器,完成邮件的打开与阅读功能;n(6)选中需要删除邮件左侧的复选

3、框,点击“删除”按钮之后,能够将选中的所有邮件设置为已删除邮件。8.1.2 用$_GET接收URL附加数据n三个知识点n使用超链接提交数据的功能说明n用$_GET接收URL附加数据n用一个文件实现数据的提交与接收演示项目文件n打开收邮件界面,观察如下效果n将鼠标停留在“首页、上页、下页、尾页”相关链接上,观察显示的URL信息n将鼠标停留在某封邮件链接上,观察URL信息点击超链接提交数据功能说明n在收邮件界面中,使用非常多的一个功能是点击超链接向服务器端提交数据,也就是在打开链接文件的同时,向该文件中提交了指定的数据。例如,点击首页、上页、下页、尾页时,需要向服务器提交一个数字值,作为将要显示的

4、页面的页码信息;点击任意邮件的发件人或者邮件主题时,则需要向服务器提交当前邮件的emailno列值,指定要打开阅读的邮件序号。功能实现方案n点击超链接向服务器端提交数据,之后在服务器端获取该数据,这两个功能的实现可以分别在两个文件中完成,也可以放在一个文件内部来实现。n例如在收邮件界面中,点击某个邮件的发件人或主题打开邮件时,点击的超链接元素属于页面文件receiveemail.php,超链接要打开的文件则是openemail.php,即提交数据的页面是receiveemail.php,接收数据的页面则是openemail.php;而收邮件界面中,点击首页、上页、下页、尾页时,点击的超链接元素

5、属于页面文件receiveemail.php,超链接要打开的文件还是receiveemail.php,即提交数据和接收数据的都是receiveemail.php文件。使用URL方式提交数据需要解决的问题n需要解决的问题有两个:n第一,在超链接中需要如何设置,才能在点击时将数据提交给服务器?n第二,超链接提交的数据在服务器端如何使用系统数组$_GET获取?在超链接中设置向服务器端提交数据,需要使用href=url?键名=键值来完成。使用$_GET键名获取应用示例-创建get.htmln创建文件get.html,在内部设置超链接,链接热点是“点击超链接,观察地址栏的变化”,链接打开的文件是get.

6、php,点击超链接时,向服务器端提交的数据对是data=123。n页面主体内容代码如下:n点击超链接,观察地址栏的变化点击超链接时,将信息123使用键名data提交到服务器的$_GET系统数组中,只要使用代码$_GETdata即可获取信息123应用示例-创建get.php文件n创建文件get.php,获取并输出get.html文件中超链接提交的数据。n核心代码如下:将提交数据与接收数据功能合并在一个文件中实现n将提交数据与接收数据功能合并在一个文件中实现,是指在这个文件中创建超链接,超链接href属性指定要链接的文件仍旧是该文件本身,即点击超链接提交的数据仍旧由当前文件自己接收并处理,提交数据

7、在浏览器端完成,而接收数据在服务器端完成。n简单描述如下:n一个文件先提交数据,而后接收并处理自己所提交的数据修改get.php文件n修改页面文件get.php,按如下结构合并原get.html文件代码和get.php文件代码 点击超链接,观察地址栏的变化 文件get.php运行结果如下:n左图为点击超链接之前,初始运行效果,右图为点击超链接之后的结果思考问题:为什么在左侧图中会出现提示信息“undefined index:data”即,在页面文件get.php代码$data=$_GETdata;中出现未定义的下标索引data?该如何解决?问题分析与解决方案说明n产生问题的原因:n页面文件ge

8、t.php第一次运行时,尚未点击超链接,也就是说还没有使用data=123向超链接指向的文件get.php中提交数据,所以在系统数组$_GET中也就不存在键名下标data,而在点击超链接之后数据被提交到页面文件get.php中,存在系统数组元素$_GETdata,获取之后就可以显示出来n解决该问题需要使用isset()函数n在使用系统数组元素$_GETdata之前,先使用isset()函数判断该元素是否已经设置,若是设置了,再获取其中保存的数据,否则不做任何处理修改页面文件get.phpn修改页面文件get.php,增加条件判断语句,修改后的代码如下:点击超链接,观察地址栏的变化 使用isse

9、t($_GETdata)检测系统数组元素$_GETdata是否设置,即检测其是否存在,若是存在,返回真值,则if()条件成立,进而执行后续两行代码处理该数组元素中保存的数据。使用超链接同时提交多个数据n若是要在点击超链接时向链接的文件中传递多个数据,可以在href属性取值中使用&符号连接新的键名与键值,例如href=get.php?data=123&name=jinnan,点击超链接之后就可以使用系统数组元素$_GETdata获取提交的第一个数据,使用$_GETname获取提交的第二个数据。8.1.3 处理查询结果记录集中的记录n打开收件箱后,在显示每页中的邮件信息时,需要从查询结果记录集中逐

10、条获取记录,然后再使用数组形式获取每条记录中每个列的列值。nPHP中提供了mysqli_fetch_array()、mysqli_fetch_row()、mysqli_fetch_object()、mysqli_fetch_assoc()等多种不同的函数来处理查询结果记录集中的记录,此处讲解mysqli_fetch_array()和mysqli_fetch_object()这两个常用的函数。1.mysqli_fetch_array()函数n使用该函数可以从查询结果记录集中获取记录指针所指向的记录。n格式为:array mysqli_fetch_array(查询结果记录集)n返回结果是数组形式保

11、存的记录信息或者是falsen如果记录指针指向某条存在的记录,则将获取记录中所有的列,并且以一个数组的形式保存;如果记录指针指向最后一条记录之后,则返回false。数组元素的访问n对于存放记录信息的数组,可以使用两种形式访问数组元素:n第一种是使用从0开始的数字索引,索引0代表查询结果中第一个列的信息,索引1代表第二个列的信息;n第二种是使用键名访问,使用数据表中的列名作为数组元素的键名,因为这种形式更直观更容易理解,使其成为程序中的主要用法。小实例n创建页面文件fetch_array.php,查询数据表emailmsg中emailno列值为1的记录信息,然后完成下面操作:n假设获取的查询结果

12、记录集为$res,需要使用如下步骤输出:n使用$row=mysql_fetch_array($res)获取记录集中的记录n使用$rowemailno、$rowsender、$rowreceiver等分别输出邮件序号、发件人和收件人等信息实例扩展n获取emailmsg表中发件人为wangaihua11的记录,以表格形式输出,输出时,表格标题行内容:发件人、收件人、主题、收发日期n执行完查询语句之后n输出表格标记和标题行内容n使用循环结构输出表格数据行,循环条件为$row=mysql_fetch($res),获取到记录则循环,否则结束循环n循环之后输出表格结束标记2.mysqli_fetch_ob

13、ject()函数n使用该函数可以从查询结果记录集中获取记录指针所指向的记录。n格式为:object mysqli_fetch_object(查询结果记录集)。n若是指向的记录存在,则将返回的结果保存为对象,使用表中的列名作为对象的属性来获取各个列的值;若是指向的记录不存在,则返回false。实现收件箱基本功能n三个知识点n收件箱页面布局说明n收件箱邮件总数查询方法说明n获取并显示收件箱邮件总数收件箱页面运行效果n点击email.php页面中左侧的“收信”或者“收件箱”超链接时,要从右侧的浮动框架子窗口中显示右图所示的页面运行效果8.1.4 分页浏览邮件n在众多的动态页面中,要浏览保存在数据库中

14、的大量数据,都需要使用分页浏览技术,例如一个留言板下面的数千条留言、邮箱中的数千封邮件等等,使用分页浏览技术之后,无论数据量怎样变化,都能保证页面的长度不会发生任何变化,变化的只有页数,只要用户点击进入自己需要的页面查阅信息即可。收件箱页面布局需要创建的文件n需要创建的文件有样式文件receiveemail.css和页面文件receiveemail.php,在页面文件中引用样式文件。n收件箱页面的页面边距要定义为0(需要在receiveemail.css文件中增加样式代码bodymargin:0;)盒子div1的样式要求n盒子div1的样式要求如下:宽度为自动,高度为25px,上下填充为0,左

15、右填充为10px,边距是0,盒子中文本字号为10pt,文本的行高是25px查询条件分析n获取当前登录账号收件箱中邮件总数时需要使用的查询语句中条件比较复杂,假设有四封邮件的收件人receiver列值分别如下:n第一封:;n第二封:;n第三封:;n第四封:;思考问题:设变量$uname的内容是,如何设置条件,保证正确查到第一封和第二封邮件?能否直接使用receiver like%$uname%,为什么?使用receiver like%$uname%将获取到这四封邮件,不符合要求,所以不可使用查询条件设置方法n正确设置方法为:nreceiver like$uname%or receiver lik

16、e%;$uname%n即若是要查询的账号在所有收件人开始的位置,则通过receiver like$uname%条件一定能够找到;若要查询的账号在中间的某个位置,则通过receiver like%;$uname%一定能够精确找到。获取并显示收件箱中的邮件总数内容设计步骤n设计这一部分内容需要通过如下几个操作步骤来实现:n第一步,启用session,获取$_SESSION数组中存储的登录账号信息,并在后面连接上,为设计查询条件做好准备;n第二步,连接打开数据库,查询表emailmsg列receiver中包含当前登录账号且没有被删除的邮件信息n第三步,获取查询结果记录集中的记录数,即为当前用户收件箱

17、中的邮件总数,在div1内部输出。完成div1内容的代码n在receiveemail.php文件中增加如下代码盒子div2及子元素的样式要求n盒子div2的样式:宽度自动,高度自动,上下填充5px,左右填充20px,上下边距5px,左右边距0,背景浅灰色#eee,下边框1像素、实线、颜色#aaf。(最后要清除高度塌陷)n盒子div2-1的样式:宽度自动,高度自动,填充是0,边距是0,向左浮动;使用样式选择符.div2-1 input定义盒子内的两个按钮中显示的文本字号是10pt。n盒子div2-2的样式:宽度自动,高度自动,填充0,边距0,向右浮动,文本行高25px,文本字号10pt。删除和刷

18、新按钮说明n删除按钮的功能:在页面中选择要删除的邮件之后,点击“删除”按钮时能够将邮件设置为已删除状态,该功能需要通过执行指定的delete.php文件来完成,该按钮需要设置为submit类型;n点击刷新按钮时,要保证在当前窗口中重新运行页面文件receiveemail.php,目的是若用户收到了新的邮件,能够及时刷新页面(为了降低复杂性,该项目中没有使用自动刷新显示新邮件功能),该按钮需要设置为普通的button按钮。添加div、删除和刷新按钮n在receiveemail.php中div1盒子的后面增加div2和内部嵌套的div2-1,添加如下内容:确定每页中要显示的记录数和邮件的总页数n每

19、页中要显示的记录数,直接在代码中给定即可,例如$pagesize=5;n收件箱中的邮件页数根据邮件总数和每页中的记录数来计算,因为得到的邮件页数可能是小数,所以需要使用函数ceil()取得不小于该数的最小整数。例如,若获取的记录总数$reccount为17,设置的每页记录数$pagesize为5,则两者相除之后的结果为3.4,使用ceil(3.4)得到的结果是不小于3.4的最小整数4;在receiveemail.php中获取到邮件总数之后插入上面代码确定当前要显示邮件信息的页码n若是用户刚刚打开收件箱,显示的应当是第一页的邮件信息,之后则根据用户点击的“首页、上页、下页、尾页”超链接获取当前要

20、显示的邮件信息的页码。例如,假设当前正在显示的是第3页内容,若点击“上页”超链接,接下来要显示的一定是第2页,这个页码数字将通过点击超链接的方式提交给服务器。确定当前要显示邮件信息的页码n例如,假设每个超链接都在href属性中使用键名pageno向服务器提交数据,要判断用户是不是刚刚打开收件箱,需要通过检测这些超链接有没有向服务器端提交数据来实现,若元素$_GETpageno存在,说明已经通过点击超链接向服务器提交数据了,此时需要获取元素$_GETpageno的数据作为当前将要显示的邮件信息的页码,否则当前必须显示第一页邮件信息。在receiveemail.php中获取到总页数之后插入该语句设

21、计“首页、上页、下页、尾页”时的原则n若收件箱中邮件页数为0,则首页、上页、下页、尾页都是文本n若当前显示第一页,则“首页”设置为普通文本,否则“首页”为超链接,点击时向服务器提交页码1;n若当前显示第一页,则“上页”设置为普通文本,否则“上页”为超链接,在点击时需要向服务器提交的页码是当前正在显示的页面页码减去1;n若当前显示最后一页,则“下页”设置为普通文本,否则“下页”为超链接,在点击时需要向服务器提交的页码是当前正在显示的页面页码加上1;n若当前显示最后一页,则“尾页”设置为普通文本,否则设置的“尾页”超链接在点击时需要向服务器提交的页码是总页数值。完善div2的代码获取当前页中要显示

22、记录(邮件)的起始记录号n查询当前用户的邮箱时,若查询结果记录集$res中的记录数$reccount为17,则系统给定的记录编号是从0到16的数列,若每页显示的记录数$pagesize为5n思考问题:n当前页码与当前页中第一条记录编号之间存在着怎样的关系?即第一页从哪条开始显示?第二页从哪条开始?第三页?第四页?第一页从第0条开始,显示04条第二页从第5条开始,显示59条第三页从第10条开始,显示1014条第四页从第15条开始,显示1516条当前页码与当前页中第一条记录编号之间的关系n根据上表中显示的数字关系,依据页码获取当前页起始记录编号的公式如下:n$pagestart=($pageno-

23、1)*$pagesize在receiveemail.php中获取到页码之后插入该语句获取当前页中要显示的若干条记录n实现这一功能,需要考虑在收件箱中显示邮件信息时,要将最后收到的邮件排列在第一页第一条,即要按照收发邮件的日期进行降序排序,因此设计select语句时,要使用order by子句按照邮件的收发日期进行降序排序,使用limit子句设置要获取记录的起始编号和记录数;在定义的查询收件箱所有记录的查询语句的基础上增加order by和limit两个子句的应用,注意order by前面一定要保留一个空格,与之前的条件子句分隔开n执行定义的查询语句之后,使用变量$result保存查询结果记录集

24、。在receiveemail.php中获取到当前页起始记录编号之后添加上面代码盒子div3及子元素的样式要求n盒子div3的样式要求为:宽度自动,高度自动,填充0,边距0;n盒子内部超链接的初始状态样式:颜色黑色、没有下划线,文本加粗显示;访问过的状态为:颜色为黑色、没有下划线,文本非加粗显示。div3内部表格的样式要求n使用包含选择符.div3 table定义样式:宽度100%。n表格单元格使用包含选择符.div3 table td定义样式:高度30px,下边框1像素、实线、颜色#aaf,单元格内容在垂直方向居中,文本字号10pt。这里的下边框用于设置每封邮件下面的横线。n表格需要包含5个列

25、,列宽分别是30px、150px、自动auto、20px和120px,分别使用class类选择符.td1,.td2,.td3,.td4和.td5定义修改receiveemail.php文件n在盒子div2后面增加下面代码,添加盒子div3及内部需要的表格教学目标n通过循环结构,逐条获取当前页中的记录,去掉发件人信息中的部分,处理日期信息得到下图所示的日期格式思考问题n在变量$result中已经包含了当前页要显示的全部记录,使用怎样的程序结构、采取何种方法从该变量中逐条取出记录并输出?因为最后一页剩下的记录数并不确定,所以$result变量中的记录数也是不确定的,因此此处可采用的最佳方案是使用w

26、hile循环结构,循环条件是$row=mysqli_fetch_array($result),若是能够从$result中取出记录,则条件成立,接下来可输出记录的信息,若是没有取出记录,则条件不成立,说明$result记录指针已经指向最后一条记录之后,循环结束即可处理$row中的数据n处理$row记录中的数据,为输出做准备n获取当前邮件的emailno列值,保存在变量$emailno中备用;n截取当前邮件sender列值中符号前面的用户名部分,保存在变量$sender中备用(使用list($sender)=explode(,$rowsender)实现);n处理当前邮件datesorr列值中的日期

27、时间信息,得到“Y年m月d日”的形式保存在变量$riqi中备用;使用空格做分割符,分割$rowdatesorr内容,保留前面日期部分保存在$datesorr中,使用-做分割符,分割$datesorr的内容,年月日分别保存在$y,$m,$d中,连接$y,$m,$d的内容,得到“Y年m月d日”形式修改receiveemail.php文件n修改receiveemail.php文件,在div3的表格内部设计循环,获取记录,处理记录中的数据为输出做准备输出邮件信息n输出表格的行起始标记n输出表格第一列的标记(引用选择符td1)及内容,内容是复选框,name定义为markup,value属性取值为变量$e

28、mailno的值;n输出表格第二列的标记(引用选择符td2)及内容,内容是超链接,链接热点为变量$sender的值,链接打开的文件是openemail.php,点击后使用键名emailno向服务器端提交变量$emailno的值;n输出表格第三列的标记(引用选择符td3)及内容,内容是超链接,链接热点为当前邮件subject列值,链接打开的文件是openemail.php,点击后使用键名emailno向服务器端提交变量$emailno的值;输出邮件信息n输出表格第四列的标记(引用选择符td4)及内容,判断当前邮件附件列attachment的值是否为空,为空,则在单元格中输出空格字符(该字符不可或

29、缺,若是该字符不存在,很多浏览器中将无法显示该单元格的下边框线);若附件列的列值不为空,则输出图片flag-1.jpg;n输出表格第五列的标记(引用选择符td5)及内容,内容是变量$riqi的值;n输出表格的行结束标记。修改receiveemail.php文件n在准备好要输出的数据之后,增加如下代码分页浏览页面存在的问题n问题分析:n在运行receiveemail.php的页面中,若是选择了一封或者几封邮件,点击“删除”按钮时,需要运行delete.php文件将选中的文件放入已删除文件夹中,但是若用户没有选择要删除的邮件而直接点击了“删除”按钮,需要怎样阻止运行delete.php文件?需要对

30、receiveemail.php文件中的表单进行数据验证,判断如果没有选择要删除的邮件,则阻止运行delete.php文件需要完成的设置n在receiveemail.php的标记中设置action为delete.phpn创建脚本文件receiveemail.js,在receiveemail.php文件中引用该脚本文件n定义函数validate()函数validate()的功能说明n使用document.f1.markup获取当前页面中的所有复选框,构成一个组,使用数组markup表示;n定义一个变量result,初始值为false,若是判断后发现页面中有被选择的复选框,则该变量值要修改为tru

31、e,否则保持为false。n使用for结构逐个判断复选框组中每个元素是否被选中,只要有一个被选中,则将result的值修改为true,然后使用break退出循环;n使用“markupi.checked”作为条件判断相应复选框是否被选中。n根据result的值确定用户有没有选择复选框,若是没有,则弹出消息框显示提示信息,并通过return false语句结束函数的执行。函数validate()的代码如下函数validate()的调用n在receiveemail.php文件的标记中使用onsubmit=“return validate()”代码调用函数即可8.2 打开并阅读邮件n在receivee

32、mail.php页面中,点击每一封邮件的发件人或者邮件主题时,将打开超链接所指定的页面文件openemail.php,阅读选择的邮件内容,同时还可以阅读或下载附件。界面效果展示n左图为不带附件的邮件阅读界面;右图为带附件的邮件阅读界面8.2.1 打开并阅读邮件页面的布局结构及功能说明div1-显示邮件基本信息div2-显示邮件内容div3-显示附件功能说明n(1)能够根据用户选择的邮件序号获取并显示邮件信息。n(2)能够计算出附件的个数并在页面中输出。n(3)显示邮件内容时,必须能够将发件人在编辑邮件内容时按下的回车键转换为本页面中的段落标记,否则无论原来的邮件内容有多长,都显示在一个段落中;

33、要求每个段落第一行都要缩进两个字符;任何情况下都要求为内容区保留一定的页面空间,若盒子div2的高度不够200px,则将高度设置为200px,否则高度根据邮件内容高度来确定。功能说明n(4)能够根据是否存在附件来确定是否显示盒子div3。n(5)显示盒子div3时,除了将放在数据表中存储的附件信息输出之外,在用户点击“下载”或“打开”链接时能够实现附件的下载或打开操作。n在显示的附件信息中包含了随机数标识、附件名称及附件大小三部分信息,这是为了保证用户在接收附件之前可以确定附件的大小。n当用户点击“打开”或“下载”超链接时,要打开或下载的附件都是保存在upload文件夹下的文件,这些文件名称前

34、面都带有“(随机数标识)”前缀,为了保证用户能够正常打开或下载附件,设计超链接时,要在文件名前面增加“(随机数标识)”前缀。8.2.2 字符串替换函数n思考问题:n用户从写邮件界面的表单元素content中输入内容时,怎样实现回车换行?nhtml页面中对内容换行时需要怎样实现?n如何将用户输入的回车换行转换成页面中换行标记或者是段落标记?用户按下回车键即可通过页面在浏览器中输出内容要进行回车换行时,使用的是换行标记或段落标记使用字符串替换函数nl2br()或str_replace()函数nl2br()n该函数名字中的数字2表示ton函数作用:n简单理解,就是把在文本域中输入文本时按下的回车键所

35、生成的字符替换为HTML的换行符标记n精确解释,是在字符串中的每个新行(n)之前插入 HTML 换行标记 n函数格式:nl2br(string)n参数string是必需的,规定要检查的字符串。函数nl2br()应用示例n创建页面文件nl2br.php,其中包含两部分代码,第一部分代码生成表单界面,包含一个name属性为txt的文本区域元素和一个submit类型的按钮“提交”;第二部分是php代码,用于接收和处理本页面中表单元素提交的数据。n在表单文本区域元素中输入带有回车的文本内容并提交之后,重新运行页面文件nl2br.php,获取用户提交的文本信息,进行两种处理:第一,直接输出获取到的信息;

36、第二,将所获取信息中的回车字符使用函数nl2br()替换为换行标记后再输出,对比观察两种输出的不同效果。代码如下生成表单界面使用isset()函数判断$_POSTtxt数组元素是否存在,页面第一次运行时,该元素不存在,所以不需要执行下面的php代码,点击提交按钮之后,该元素就存在了,需要执行中的代码。原样输出文本区域提交的内容将文本区域提交数据中的回车键使用换行标记替换之后输出到浏览器端运行界面n左图为初次运行并输入内容的界面n右图为点击提交按钮之后的输出界面输入三段内容直接输出,无换行,浏览器不解释回车换行键将回车换行替换为之后的结果str_replace()函数n函数功能:将用户指定的任意

37、子串全部替换成另一个子串;n函数格式:str_replace(find,replace,string,count);n参数解释:nfind:必需,规定要查找的子串,也就是将要被替换掉的子串;nreplace:必需,规定要用来进行替换的子串;nstring:必需,规定被搜索的字符串;ncount:是可选参数,对替换次数进行计数,通常很少使用。str_replace()函数应用示例n创建页面文件strreplace.php,其中包含两部分代码,第一部分代码生成表单界面,包含一个name属性为txt的文本区域元素和一个submit类型的按钮“提交”;第二部分是php代码,用于接收和处理本页面中表单元

38、素提交的数据。n在表单文本区域元素中输入带有回车的文本内容并提交之后,重新运行页面文件strreplace.php,获取用户提交的文本信息,进行两种处理:第一,直接输出获取到的信息;第二,将所获取信息中的回车字符使用函数str_replace()替换为段落标记后再输出,对比观察两种输出的不同效果。代码如下被替换掉的字符是“chr(13).chr(10)”,其中chr(13)是回车符,chr(10)是换行符,13是回车符在ASCII码表中的值,10是换行符在ASCII码表中的值,用户编辑文本时按下的回车键将同时生成回车符和换行符,这两个字符不可颠倒顺序;用来替换的字符是设置了缩进2个字符的段落标

39、记。运行效果图思考问题:为什么使用str_replace()函数处理之后,第一个段落与后面两个段落的效果是不同的?要如何修改?问题解答:用户在文本域中输入文本时,并没有在开始时就按下回车键,所以第一个段落前面不能替换出段落标记;解决的方法是,在输出前先使用代码echo 输出一个带有缩进两个字符的段落标记,问题即可解决。完整代码8.2.3打开并阅读邮件的功能实现n设计打开并阅读邮件页面,需要创建的文件有样式文件openemail.css和页面文件openemail.php。n分别创建两个文件,并在openemail.css文件中使用代码bodymargin:0;定义整个页边距为0。n之后,在设计

40、过程中,我们按照页面内容的顺序分别设计元素、和。1.设计元素n(1)元素及内部元素的样式要求n选择符#div1:宽度自动(保证能够适应浮动框架窗口宽度的变化),高度自动(根据实际内容的多少来确定),上下填充10px,左右填充0,边距0,背景色#eef,下边框2像素实线颜色为#aaf。n页面中所有段落的样式直接使用html标记名选择符p定义:上下边距5px,左右边距都0,上下填充0,左右填充10px(保证段落内容左右不贴边),段落中的字号10pt,文本行高20px。1.设计元素n(2)设计div中的内容n设计元素中的内容需要三个操作步骤:n第一步,获取要打开的邮件的邮件序号;n第二步,连接打开数

41、据库email,以指定的邮件序号为条件查询数据表emailmsg,得到指定序号的邮件信息;n第三步,从服务器端输出元素,并在其内部输出需要的邮件信息。盒子div1的内容n阅读带附件的邮件时,盒子div1中的内容如下图所示思考问题:如何判断是否有附件并获取附件个数?解决附件个数的问题n使用explode()和分号字符分割当前邮件附件列中的附件名称信息,分割后的结果保存在数组$attment中;n获取数组元素的个数,减去1之后,即可得到附件个数,保存在变量$attmentcount中。因为每个附件名称后面都带有分号,若是存在三个附件,则有三个分号,使用explode函数分割之后,会存在四个子串,即

42、数组$attment长度为4,但实际只有三个附件,所以将数组长度值减去1之后作为附件个数来使用;修改openemail.php文件n在div1结束之前添加下面代码判断附件是否为空使用分号分割各个附件名称信息获取附件个数2.设计元素n(1)元素及内部元素的样式要求n选择符#div2:宽度自动,高度自动,上下填充10px,左右填充0,边距0。n元素内部控制输出邮件内容的所有段落都要增加缩进2个字符的样式,直接使用包含选择符#div2 p定义即可。2.设计元素n(2)设计div中的内容n设计元素中的内容需要两个操作步骤。n第一步,输出元素,在div内部开始处先增加一个段落标记,然后将当前邮件内容中的

43、回车换行符号使用段落标记替换之后,在div中输出;n第二步,判断元素的高度是否小于200px,若是小于200 px,则将其设置为200 px,否则该元素的高度根据内容的多少来自动设置修改openemail.php文件n在盒子div1的下方增加如下代码3.设计元素n(1)元素及内部元素的样式要求n选择符#div3:宽度自动,高度自动,填充0,边距0,边框1像素实线颜色为#aaf。n元素中用来显示附件个数的段落样式与其它段落样式不同,这里使用包含选择符#div3.p1进行定义,样式要求:边距0,背景色#eef,文本行高40px。3.设计元素n(2)设计div中的内容n首先要判断是否需要输出元素,若

44、是当前邮件中有附件,则要输出,否则不需要输出。n输出元素中的内容需要三个操作步骤。n第一步,使用类名为p1的段落控制输出附件个数;n第二步,分割数据表emailmsg中attachment的列值,获取一个个附件的信息,格式为“(随机数标识符)文件名称.扩展名(文件大小)”,作为即将显示的附件名称信息n第三步,对上面附件信息进行处理,获取用于超链接打开或下载的附件名称信息,格式为“(随机数标识符)文件名称.扩展名”,这是在文件夹upload中存储的文件名称格式。思考问题n如何根据附件名称信息“(随机数标识符)文件名称.扩展名(文件大小)”格式得到“(随机数标识符)文件名称.扩展名”格式?n第一步

45、,使用explode函数和圆点分割符把附件名称分为前后两部分,前面一部分中包括了放在圆括号中的随机数和主文件名,使用变量$attname保存,后面一部分中包括了扩展名和放在圆括号中的文件大小信息,使用变量$kuozhanm保存;n第二步,继续使用explode函数和左圆括号字符分割$kuozhanm中保存的信息,将其分为扩展名和文件大小两部分,第一部分使用变量$kuozm保存,目的是去掉文件大小部分,这样才能得到可用于下载或打开的文件名信息;n第三步,将$attname中包含的随机数信息和主文件名信息与$kuozm中包含的扩展名信息连接起来,中间再插入一个圆点,构成完整可用的文件名。修改ope

46、nemail.php文件n在设置div2盒子高度的脚本代码之后增加如下代码:8.3 删除邮件n8.3.1 将邮件放入已删除文件夹n在receiveemail.php页面中,选中某封或者某几封邮件前面的复选框n点击“删除”按钮,执行delete.php文件,接收文件receiveemail.php中复选框组传递过来的邮件序号值,把被选中邮件记录的deleted列值设置为1即把被选中邮件放入已删除文件夹中,然后返回到文件receiveemail.php中,并弹出消息框告知用户移动到已删除文件夹中的邮件数删除邮件功能说明创建文件delete.php获取复选框组提交的邮件序号,保存在数组$emailn

47、o中获取邮件序号的个数使用循环结构将指定序号的邮件中deleted列值设置为1重新运行receiveemail.php文件,将剩下的邮件重新按顺序排列并显示在窗口中弹出消息框,用于通知用户被删除的邮件数引用delete.php文件n设置receiveemail.php文件中标记的action属性取值为delete.php,当点击submit类型按钮“删除”后执行该文件8.3.2 分页浏览已删除文件夹中的邮件n点击已删除超链接,在右侧浮动框架中显示已删除邮件页面功能实现n设计该页面时,直接使用样式文件receiveemail.css,不需要进行任何修改;n页面文件deletedemail.php

48、与receiveemail.php的内容有以下几点不同的地方:n第一,收邮件页面中的文本“收件箱”更换为已删除页面中的“已删除邮件”;n第二,获取已删除文件夹中邮件记录时,为查询语句设计的条件是表emailmsg中receiver列值中包含当前登录用户信息,并且deleted列值为1页面功能实现n第三,将表单中action属性的取值更换为用于彻底删除邮件的文件deletedchedi.php,当用户在已删除文件夹中选择邮件,点击“彻底删除”按钮之后,将执行该文件;n第四,收邮件页面中的按钮“删除”更换为已删除页面中的“彻底删除”;点击“刷新”按钮时,需要重新执行的文件更改为deletedema

49、il.php;n第五,设置“首页、上页、下页、尾页”超链接时,链接的文件都改为deletedemail.php。n其它所有内容与receiveemail.php文件完全相同,请大家按照上面要求自行修改即可。功能说明n在deletedemail.php页面中,选中某一封或某几封邮件前面的复选框,点击“彻底删除”按钮后,将执行页面文件deletedchedi.php,把被选中的邮件记录从数据表emailmsg中彻底删除,另外,若是该邮件中有附件,把upload文件夹中的附件文件也同时删除。n需要解决的关键问题:n如何从upload文件夹中彻底删除某封邮件所包含的附件?删除附件操作步骤n使用explode函数和分号分割attachment列中各个附件的名称信息,保存在数组$attment中,获取附件个数;n将附件名称信息以圆点为分割符进行分割,分割之后保留前两个部分,分别保存在变量$mainName和$secName中;n对于$secName中的信息使用左括号进行分割,保留第一部分的扩展名信息,保存在变量$kuozName中;n将主文件名和扩展名连接起来形成“文件名.扩展名”结构,之后放在“upload/”之后,形成“upload/文件名.扩展名”结构;n使用PHP提供的文件操作函数unlink()删除指定路径下的文件。创建deletedchedi.php文件删除附件相关代码

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|