PHP+MySQL动态网页技术教程第7章商城登录注册模块开发7.1项目导引:登录注册模块很多网站都具有登录注册的功能电子商务网站、社区论坛、博客、微博等网站系统在图书商城中,需要先登录才能完成图书的购买任务。我们该如何开发一个商城的登录注册模块呢?7.2项目分析当当网登录注册7.2项目分析登录注册流程图数据验证新用户注册填写用户信息输入验证码提交注册注册成功是否用户登录填写账户密码数据验证是登录成功否用户管理7.3技术准备用户登录过程中存在这样一个问题,用户在登录页面登录成功后,不管用户到达网站的哪个页面用户始终处于登录状态。用户从一个页面跳转到另外一个页面。由于Http协议是无状态协议,所以它不能够跟踪用户;PHP变量的作用范围也局限于同一个PHP文件,它也不能够跟踪用户。PHP服务器如何跟踪一个客户端用户的呢?这里用到了PHP中SESSION和COOKIE。7.3技术准备7.3.1Cookie介绍1.Cookie概述Cookie表示由网站服务器发送出来存储在客户浏览器上的小量信息,从而使得访客下次访问该网站时,可以从浏览器读回这些信息。这种机制可以让浏览器记住访客的特定信息,如登录的用户名,上次访问的位置,浏览的图书等内容。以用户登录过程为例来看,当用户通过客户端浏览器访问Web服务器的登录页面,输入账号和密码进行登录,此时账户信息就保存在客户端的Cookie中。当用户再次访问同一服务器的其它页面时,就会自动携带Cookie中的数据一起访问,而不需要每个页面都重新登录。7.3技术准备7.3.1Cookie介绍1.Cookie概述我们把Web服务器比作一家商场,商城中的每个店面就是一个页面,而Cookie好比是你第一次去商场时商场发的会员卡,当你在商城任意一家店面购物时,只要出示会员卡便可以享受优惠。在会员卡的有效期内,任何时间来到商场都被看成是商场会员。2.cookie的管理(1)设置cookie设置cookie的函数是setcookie(),语法格式如下:boolsetcookie(stringname[,stringvalue[,intexpire[,stringpath[,stringdomain[,boolsecure]]]]])7.3技术准备7.3.1Cookie介绍2.cookie的管理(2)接收和处理cookie预定义全局数组$_COOKIE(3)删除cookie把cookie的值设为空或有效期设为小于当前时间的值,即删除了cookie例7-17.3技术准备7.3.2Session介绍1.Session概述Session技术与Cookie类似,都可以用来存储访问者的信息,但最大不同在于Cookie是将信息存放在客户端,而Session是将数据存放于服务器中。Session在英语中是会议、会期的意思,用于网络领域,可以称之为客户端与服务器的会话期,从客户端输入网站的网址开始访问到关闭浏览器结束访问,经过的这段时间就可以称之为一个Session,它是一个特定的时间概念。7.3技术准备7.3.2Session介绍1.Session概述上一节中我们把Cookie比喻成第一次去商场时为你提供的会员卡,并由用户自己保存,如果用户的会员卡丢失了就不能以会员身份购物了。如果我们在办理会员卡时,把会员卡保存在商场,而我们只保存卡号,下次购物时只提供卡号就可以。Session就是这样的,在服务器端保存Session变量的名和值,同时在客户端保存由服务器创建的一个Session标示符(SessionID)。当用户再次访问服务器时,就会把SessionID发送给服务器,根据SessionID就可以提取保存在服务器端的Session变量的值。7.3技术准备7.3.2Session介绍2.Session的管理(1)启动会话session_start()函数(2)使用会话变量存储信息全局数组变量$_SESSION(3)注销会话变量Session_destory()函数unset()函数例7-2、例7-37.3技术准备7.3.3相关函数1.随机数函数rand()在程序中常常需要产生一个随机数,产生随机数通常使用rand()函数,函数语法格式如下:intrand([intmin,intmax])例7-42.md5加密算法md5加密算法针对一个随机长度的信息来产生一个128位的加密信息,函数语法格式如下:stringmd5(stringstr)例7-57.3技术准备7.3.3相关函数3.创建图像函数使用imagecreate()函数可以创建一个空白图像,函数语法格式如下:resourceimagecreate(intx_size,inty_size)4.分配颜色函数imagecreate()函数创建的图像是一个空白图像,需要使用imagecolorallocate()函数为其设置背景色和内容的颜色。函数语法格式如下:intimagecolorallocate(resourceimage,intred,intgreen,intblue)7.3技术准备7.3.3相关函数5.向图像写入文本函数imagechar()函数可以沿水平方向向图像中写入一个字符,函数语法格式如下:boolimagechar(resourceimage,intfont,intx,inty,stringc,intcolor)imagestring()函数可以沿水平方向在图像中写入一行字符串,函数语法格式如下:boolimagestring(resourceimage,intfont,intx,inty,strings,intcolor)7.3技术准备7.3.3相关函数6.输出图像函数header()函数设置输出图像文件的MIME类型header(content-type:image/gif);header(content-type:image/jpeg);header(content-type:image/png);imagegif()函数可以生成GIF格式的图像并将图像输出到浏览器,函数语法格式如下:boolimagegif(resourceimage[,stringfilename])imagejpeg()和imagepng()函数例7-67.4项目实施7.4.1验证码制作7.4.2用户注册用户注册功能这里我们通过用户注册页面(regsiter.php)和添加注册(addregsiter.php)两个程序页面实现。注册页面负责收集用户信息,添加注册页面负责将用户信息添加到数据库用户表中。7.4项目实施7.4.2用户注册1.创建用户注册页面7.4项目实施7.4.2用户注册2.编写用户注册程序添加注册页面(addregsiter.php)负责将用户添加的信息添加到数据库中。添加注册程序处理流程为:接收用户信息图像验证码验证用户名是否存在验证将注册信息添加到数据库程序跳转到登录页面。7.4项目实施7.4.3用户登录用户登录程序有两种实现方案,通过Session或者Cookie都可以实现登录功能。基于Session的用户登录安全性更好一些,但是通常当用户关闭浏览器时用户登录信息就失效了。基于Cookie的用户登录可以实现用户登录信息的长期保存。这里我们采用Session方案。用户登录需要用户登录(login.php)和登录验证(logincheck.php)两个页面实现,登录页面负责收集用户信息,登录验证页面负责验证用户信息是否正确。7.4项目实施7.4.3用户登录1.编写用户登录表单程序7.4项目实施7.4.3用户登录2.登录验证程序(logincheck.php)登录验证程序负责接收登录页面传过来的用户名和密码信息,然后和数据库中的账户信息进行匹配,匹配正确则登录成功。用户登录成功后需要将登录信息保存到Session中以供其它页面使用。3.退出登录程序(quitlogin.php)如果用户想退出登录,结束对网站的访问,用户可以单击网站首页中的退出超链接(ahref='quitlogin.php?id=1'退出/a),实现用户的退出。用户退出就是将用户登录时生成的session变量注销,然后再跳转到网站首页。7.5技术拓展7.5.1图像函数1.创建真彩色图像imagecreatetruecolor()函数例7-132.画像素点imagesetpixel()函数例7-143.画实线imageline()函数例7-157.5技术拓展7.5.1图像函数4.写入中文文本(1)字符集转换iconv()函数把一个字符串转换为所需要的字符编码格式(2)写入中文imagettftext()函数可以实现用truetype字体向图像写入文本例7-167.6本章小结本章我们完成了商城用户登录注册模块的开发,主要包括用户登录、用户注册、退出登录和图像验证码的制作。在这过程中我们学习了PHP的Cookie机制、Session机制和制作验证码相关函数。在技术拓展部分介绍了PHP中的常用图像函数。7.7强化练习一、选择题1.SESSION会话的值存储在()A.硬盘上B.网页中C.客户端D.服务器端2.在PHP中哪个变量数组包含客户端发出的cookies数据()A.$_COOKIEB.$_COOKIESC.$_GETCOOKIED.$_GETCOOKIES3.用来确定Cookie有效期的属性是()A.PATHB.NAMEC.EXPIRESD.DOMAIN7.7强化练习一、选择题4.Session和Cookie的说法错误的是()A.Session和Cookie都可以记录数据状态B.Cookie是客户端技术,Session是服务器端技术C.在使用Session和Cookie之前页面不能有任何输出D.在使用Cookie前需要先启动Cookie5.是用PHP的GD函数库创建图像时,需要首先获取图像资源,下面函数不能创建图像资源的是()A.imagecreate()B.imagecreateturecolor()C.imagecreatefromjpeg()D.imagecolorcate()7.7强化练习二、简答题1.简述Session和Cookie的异同点。2.简述用户登录注册模块的主要功能及其处理流程。三、操作题1.完成基于Cookie用户登录模块的开发2.完善用户登录注册模块,完成用户管理模块的开发,主要包括用户信息的查看,修改等功能。3.使用PHP的GD函数库,制作中文验证码。