教学课件任务6-邮箱登录功能

上传人:痛*** 文档编号:218117836 上传时间:2023-06-16 格式:PPTX 页数:26 大小:2.06MB
收藏 版权申诉 举报 下载
教学课件任务6-邮箱登录功能_第1页
第1页 / 共26页
教学课件任务6-邮箱登录功能_第2页
第2页 / 共26页
教学课件任务6-邮箱登录功能_第3页
第3页 / 共26页
资源描述:

《教学课件任务6-邮箱登录功能》由会员分享,可在线阅读,更多相关《教学课件任务6-邮箱登录功能(26页珍藏版)》请在装配图网上搜索。

1、教材配套资源页完整PPT课件教学课件任务6-邮箱登录功能1任务六 163邮箱登录功能实现n登录界面的设计n登录功能实现6.1 设计登录界面n6.1.1 设计普通的登录界面n登录界面运行效果如图所示n左图为初始状态效果,右图为输入错误的用户名或密码之后的效果登录界面布局.divw定义整个页面的父元素div样式#errormsg定义错误提示信息内容的div#cont定义包含用户名和密码等表单元素的div页面中三个div的样式说明n.divw样式要求:宽度为370px,高度为200px,上填充为50px,其余填充为0,上下边距为0,左右边距为auto(设置居中),边框为1像素实线、颜色是蓝色。n#e

2、rrormsg样式要求:宽度为200px,高度为40px,填充是0,上下边距是0,左右边距是auto,盒子的初始状态为隐藏,盒子中文本的字号为10pt,文本颜色是红色;n#cont样式要求:宽度为320px,高度为160px,填充是0,上下边距是0,左右边距是auto,盒子中文本字号为10pt。在内部使用上下边距为25px的段落标记排列表单元素,段落字体设置为Calibri登录界面表单元素说明n四个表单元素emailaddrpsdSubmit按钮button按钮用户名文本框样式要求为:宽度180px,高度16px,上下填充为2px,左右填充为0,边框为1px、实线、颜色#aaf;密码框样式要求

3、为:宽度180px,高度16px,上下填充为2px,左右填充为0,边框为1px、实线、颜色#aaf;关于“注册”按钮n“注册”按钮是为没有注册账号的用户准备的,在登录界面中点击“注册”按钮时,将在新窗口中运行注册文件n思考问题n点击该按钮时触发的事件是什么?n如何通过脚本代码在新窗口中打开zhuce.html点击后在新窗口中打开zhuce.html文件,代码为:onclick=window.open(zhuce.html);6.2 完成登录功能n6.2.1 创建denglu.php文件n创建denglu.php文件,完成如下功能:n第一,获取denglu.html页面中提交的账号和密码信息,并

4、且将账号信息保存到$_SESSION系统数组中,这是因为在完成登录之后,打开写邮件页面文件writeemail.php或者收邮件页面文件receiveemail.php时,都需要在页面中使用该账号信息:当用户要发送邮件时,该账号信息直接作为发件人信息来使用,当用户接收邮件时,则将该账号信息作为收件人信息使用,因此必须在登录完成时将账号信息保存到系统数组$_SESSION中。邮箱登录功能的主要任务n第二,在数据表usermsg中查询用户名和密码信息,根据查找结果进行如下操作:n(1)若是找到,说明用户输入的信息是正确的,接下来运行页面文件email.php,打开邮箱界面;n(2)若是没有找到,说

5、明用户输入的信息有误,接下来要重新运行denglu.html文件,输出脚本代码设置显示“账号或密码错误,请重新输入”提示信息,告知用户重新输入思考问题n如何判断用户输入的账号和密码是否是正确的?以用户输入的账号密码为条件设计SQL语句,查询数据表usermsg中的记录,若查询结果记录集中记录数为0,说明输入的账号或密码是错误的,为1,说明是正确的思考问题n账号或密码输入错误时,如何返回denglu.html文件?n如何通过脚本代码设置errormsg的状态为显示?使用include包含denglu.html使用脚本代码获取到元素errormsg之后,设置其样式中的display取值为block

6、即可12登录中的SQL注入问题使用该代码存在什么问题?如何解决?SQL注入问题n对于代码:$sql=select*from usermsg where(emailaddr=$emailaddr)and(psd=$psd)n若用户恶意填写的邮件地址如下:$emailaddr=wang or a=a;n恶意填写的密码信息如下(没有加密时可以这样用,加密后不可):$psd=wang or a=a;n此时得到的SQL语句如下:$sql=select*from usermsg where(emailaddr=wang or a=a)and(psd=wang or a=a)n此时查询条件是成立的,这意味着

7、任何用户都无需输入合法的账号和密码即可登录。13防止SQL注入n在PHP中可以通过函数mysqli_real_escape_string()有效防止注入攻击,做法是将SQL语句中的特殊字符进行转义,转义时受影响的字符包括:x00、n、r、x1a。n函数格式:mysqli_real_escape_string(connection,string)。n参数说明:n参数connection,必需,规定要使用的 MySQL 连接;n参数string,必需,规定要转义的字符串。n使用函数mysqli_real_escape_string($conn,wang or a=a)转义字符串之后的结果为“wan

8、g or a=a”,此时得到的查询条件where(emailaddr=wang or a=a)and(psd=wang or a=a)不成立。14解决SQL注入的第二种方案n前面给定的方案是在服务器端对字符进行转义之后不允许登录,你还可以提供怎样的解决方案?n在denglu.html页面中增加表单数据验证n若是账号不在注册时要求的6-18个英文字母数字下划线这样一个范围中,则不允许提交数据npattern=a-zA-Za-zA-Z0-9_4,16a-zA-Z0-915登录功能中的账号锁定功能n若是要求3次登陆不成功时,锁定账号30分钟,需要使用cookie和session相结合完成n登录不成功

9、的次数,使用session记录,每次不成功都要判断session记录的信息是否存在,若是存在则直接读取其中记录的次数并完成加1操作重新写入session,否则说明是第一次登录不成功,使用session保存1n3次不成功时,创建cookie记录账号信息,cookie存活30分钟,同时弹出消息框提醒用户;没有达到3次时,每失败一次,提醒用户还剩下的机会。若是用户在账号锁定期间继续登录,则弹出消息框提醒用户账号已经被锁定16关于cookiencookie是用户浏览网站时,由服务器写入用户主机硬盘中的一个文本文件,其中保存了用户访问网站时的一些私有信息。当用户下一次再访问该网站时,网站的PHP文件就可

10、以读取这些信息,用于进行各种判断。简而言之,cookie是一种在本地浏览器端储存数据并以此来跟踪和识别用户的机制。创建cookien在PHP中创建cookie时需要使用setcookie()函数,语法格式如下:nsetcookie(name,value,expire,path,domain,secure)n参数:n(1)name:必选的,设置cookie的名称。n(2)value:必选的,设置cookie的值。n(3)expire:可选的,设置cookie的有效期,这是一个UNIX时间戳,即从UNIX纪元开始的秒数。对于expire参数的设置一般通过当前时间戳time()加上相应的秒数来决定,

11、例如time()+1200表示cookie将在20分钟之后失效,若是不设置expire参数,则cookie将在浏览器关闭时立即失效。创建cookie简单应用举例n例如nsetcookie(name,zhangmanli,time()+3600)n作用是创建一个名称为name、取值为zhangmanli的cookie,该cookie的存活期是1个小时。访问cookien通过setcookie()函数创建的cookie作为数组元素,存放在系统数组$_COOKIE中,因此我们可以直接通过数组元素来访问已经创建的cookie。例如,对于上面创建的cookie,使用代码echo$_COOKIE“name

12、”;可以输出zhangmanli。n另外,我们可以用$_COOKIEname=zhangmanli方式创建一个cookie,但是这种cookie在会话结束时会消失。删除cookien使用setcookie()函数创建cookie时通常都会指定一个过期时间,如果到了过期时间,cookie将会被自动删除,若是在过期之前想要删除cookie,则可以使用setcookie()函数重新创建cookie,将其过期时间设置为过去的时间,例如代码setcookie(name,zhangmanli,time()-600)即可将名称是name的cookie删除掉。修改denglu.php代码n在获取用户输入的账号

13、后,判断如果cookie中已经保存了相应的账号信息,说明该账号已经被锁定,弹出消息框提醒用户。n增加如下代码nCookie将在后面创建,cookie的名字就是用户登录的账号名称修改denglu.php代码n在账号密码错误之后,判断session中是否存在以登录账号为键名的数组元素(保存的是出错次数),若是存在,则说明不是第一次出错,将出错的次数读出来,保存在变量$count中并完成加1操作;若是不存在,说明是第一次出错,设置变量$count的值为1,之后将变量的值保存在session中。代码如下:元素键名是账号。若是有两个账号在同一个机器中交替登录,使用各自的账号保存错误次数修改denglu.

14、php代码n在确定了$count的值之后,判断若是3,则创建cookie,保存当前登录的账号信息,输出脚本提示用户3次出错,账号锁定30分钟,使用exit()方法结束程序的运行;否则使用变量$chance=3-$count计算还可以尝试的次数,输出脚本弹出消息框提示用户还剩下几次机会。创建的cookie,名字和内容都是账号。若是有两个账号在同一个机器中先后都被锁定,那么先后创建的两个cookie互不影响说明n当前提供的做法只能保证在同一个设备中登录错误3次能被锁定n若是更换设备重新尝试,原来的计数和锁定状态都将无效。n要解决这一问题,需要在数据表usermsg中增加账号锁定的相关列(计数列、主机名称列等),账号每次错误,都要将出错次数记录到计数列中,第一次出错就要获取主机名称写入到主机名称列中,denglu.php文件中要获取这个数据,进行判断比较等等。本课件制作整理者:郭迎春 仅可用于教学、学习、交流使用 如内容、图片、字体等有侵权,请联系删除。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!