一、实验目的
1.掌握会员登录和资料修改功能的实现方法
2.掌握找回密码功能的实现方法
二、实验环境
硬件为个人微机,软件为操作系统Windows 7
三、实验要求
1. 遵守实验室纪律,在规定的时间内完成要求的内容。
2. 认真书写实验报告,如实填写各项实验内容。
四、实验内容和步骤:
1.掌握会员登录和资料修改功能的实现方法
在输入文本框的数据和数据库中的用户名密码对比,如果匹对成功即可登录(跳转login-true),如果匹对失败即登录失败(跳转login-false)。
所以首先还是需要在login.php中进行字段的绑定:
因为存在多个表单,需要进行核验,而其中登录的数据来源于表单form2,同理如果有多个连接名也需要进行核验。
其中用户名列并不是uid,我们需要对比的是用户名uname和密码upassword来进行核验,所以需要修改。
当用户名密码验证成功后跳转到登录成功页面
对“欢迎您:XXXX”进行字段绑定,用于显示当前的登录用户。
在该login-true需要设计一个阶段变量:主要是用来存储当前的用户信息,在用户长时间活动会保存登录状态,如果有长时间不活动会超时退出登录状态。
将XXXX删除,插入阶段变量
阶段变量有了,接着处理修改用户信息,需要赋值,首先进行连接的绑定
此时现在并不知道修改哪些字段的内容需要进行参数传递绑定
退出登录:使用服务器行为的注销用户
退出后到(login-out)
会员资料修改:
修改用户资料也有一个url参数的传递,这样update页面才能够获取到某一个用户的信息即相关字段,才能准确的指导修改的是哪一个用户(登录成功界面中"updata.php?username=<?php echo $_SESSION['MM_Username']; ?阶段变量的值)。
而在原先数据库设计中我们设计了7个字段,而对比update.php界面多了uid的字段,后续将uid进行隐藏域设计。
在实际的操作中,只要有信息的查询就要有记录集,而由于还是要确定某个用户的字段,在设计记录集的时候就需要将uname进行筛选某一个用户的数据。
最后需要将字段相关字段进行绑定,其中需要注意密保问题是下拉框不可以直接绑定。
密保问题使用动态表单进行数据绑定
其中值一定要一致
最后需要在表的任意位置插入一个隐藏域用于处理uid字段
绑定uid字段
最后在我们服务器行为里面设置更新记录,更新完成跳转到update-ok.php
启动阶段变量
即可完成用户登录和资料修改的操作
2.掌握找回密码功能的实现方法
在新用户注册界面reg.php中设计的“密码提示问题”和“密码答案”两个表单项,其作用是当用户忘记密码时,通过注册所设置的密码提示问题和答案找回密码,实现的方式是判断用户提供的密码提示问题与数据库中的答案是否一致,如果相同,则可以找回遗失密码。
其中主要涉及的三个页面为find-pass.php(找回密码)、find-quesstion.php(密保问题)、find-res.php(),每个页面都会将表单的内容传递到下一个页面。
find-pass.php主要提供用户名(fname = = uname)——> find-quesstion.php(如果用户名存在显示find-quesstion的密保)——> find-res.php(找回成功)
操作:
首先将find-pass.php中表单<form id="form2" name="form2" method="post">内容传递到find-quesstion.php,其中传递的内容就是fname。
打开find-quesstion,这个页面中分为了两部分,第一个部分:form2(主要用来显示上一个页面传递过来的用户名所存在的密保问题,以及存在的密保答案)、第二部分:所查询的用户名不存在的情况。
分析功能:
第一部分(记录集不为空,有form2的传递值)、第二部分(记录集为空,没有form2的传递值)
第一部分:
用户名存在的情况:
同理有信息的查询输出就存在记录集体,uname=fname
进行字段绑定
创建隐藏域:目的要去核实用户的用户名是否存在所带来的影响,防止用户不存在的时候让界面不显示
如果用户填对信息后,需要将表单传递到下一个页面find-res.php中
设置用户名存在部分的显示情况:
接下来就可以设置用户名不存在的情况:
设置找回密码的链接
打开find-res.php
也包含两种情况:找回密码成功和找回密码失败
如果在上一个页面中填对的密保答案,那自然时找回密码成功的显示,反之。
同理只要有数据的输出就必然有记录集,而这个数据也是从上一个传递的。而这个数据是密保答案来进行判断的,所以筛选是需要为answer。
绑定字段:
密码找回了可以重新登录
如果找回密码失败,不存在任何数据的传递,重新回到上一个页面重新填写
设置显示记录集为空和不为空的情况页面显示
不为空
为空