1、PHP动态网页设计教程动态网页设计教程十二、用户注册系统的设计与实现十二、用户注册系统的设计与实现黄迎久黄迎久内蒙古科技大学工程训练中心内蒙古科技大学工程训练中心主要内容主要内容本讲主要内容本讲主要内容 (1) 用户注册系统的设计;用户注册系统的设计;一、用户注册系统简介一、用户注册系统简介 用户注册系统是用户注册系统是WEB中的功能较为简单的系统,该系统为浏览器用中的功能较为简单的系统,该系统为浏览器用户提供用户注册功能和用户登录功能。户提供用户注册功能和用户登录功能。 用户先打开注册页面,然后填写用户注册信息,按下提交按钮,系用户先打开注册页面,然后填写用户注册信息,按下提交按钮,系统将用
2、户提交的个人信息录入到数据库中。统将用户提交的个人信息录入到数据库中。 用户打开登录界面后,在登录界面中填写用户名和密码信息,按写用户打开登录界面后,在登录界面中填写用户名和密码信息,按写按钮,系统将从数据库中查询是否存在该用户信息。按钮,系统将从数据库中查询是否存在该用户信息。二、用户注册系统界面的实现二、用户注册系统界面的实现三、数据库的设计三、数据库的设计 创建用户信息表:创建用户信息表:user。字段名字段名字段类型字段类型字段说明字段说明usernamevarchar(20)用户登录名称用户登录名称passwordvarchar(20)用户登录密码用户登录密码sexvarchar(2
3、)用户性别用户性别interestsvarchar(100)用户爱好用户爱好remarktext用户简介用户简介四、用户注册功能的流程四、用户注册功能的流程Index.html采集用户信息采集用户信息密码是否一致?密码是否一致?连接数据库连接数据库用户名是否已注册?用户名是否已注册?用户信息的注册用户信息的注册用户信息成功用户信息成功反馈密码输入错误信息反馈密码输入错误信息反馈用户名重复错误信息反馈用户名重复错误信息关闭数据库服务器连接关闭数据库服务器连接exitregister.phpYNNY 五、用户注册系统功能的实现五、用户注册系统功能的实现 创建数据库连接文件创建数据库连接文件 con
4、nect.php 五、用户注册系统功能的实现五、用户注册系统功能的实现 接收提交信息接收提交信息 五、用户注册系统功能的实现五、用户注册系统功能的实现 判断提交的密码是否一致判断提交的密码是否一致 ?php /接收用户信息接收用户信息 if($password1!=$password2) exit(密码不一致!密码不一致!); else /判断用户名是否已被注册过判断用户名是否已被注册过 五、用户注册系统功能的实现五、用户注册系统功能的实现 判断用户名是否已被注册过判断用户名是否已被注册过 0) exit(该用户名已被注册过!该用户名已被注册过!); else /将用户信息保存入数据中将用户信
5、息保存入数据中 五、用户注册系统功能的实现五、用户注册系统功能的实现 将用户信息保存入数据表中将用户信息保存入数据表中 六、用户登录页面的实现六、用户登录页面的实现 六、用户登录页面的实现六、用户登录页面的实现0) echo 用户名和密码输入正确用户名和密码输入正确; else echo 用户名和密码输入错误!登录失败!用户名和密码输入错误!登录失败!; mysq_close(); ? 七、七、 SQL注入注入 所谓所谓SQL注入,就是通过把注入,就是通过把SQL命令插入到命令插入到Web表单递交或输入表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的域名或页面请求的查询字
6、符串,最终达到欺骗服务器执行恶意的SQL命令。命令。 当配置文件当配置文件php.ini中的中的magic_quotes_gpc选项设置为关闭选项设置为关闭(magic_quotes_gpc=Off),使用用户名,使用用户名 “ or”= ” 和密码和密码 “ or”= “登录系统时,系统永远可以登录成功!登录系统时,系统永远可以登录成功! 产生产生BUG的原因:的原因:SQL语句中出现特殊字符时,没有对这些字符语句中出现特殊字符时,没有对这些字符进行适当的转义,使得进行适当的转义,使得”select * from user where username=“or”=“ and password
7、=“or”=“ 中的子句中的子句where 永远为永远为TRUE,这使得一些非法用户就乘虚而入,成功登录系统。这使得一些非法用户就乘虚而入,成功登录系统。 七、七、 SQL注入注入 MySQL数据库引擎不会自动过滤特殊字符,因此防止数据库引擎不会自动过滤特殊字符,因此防止SQL注入注入的方法就是在的方法就是在PHP中过滤这些特殊字符。中过滤这些特殊字符。 方案一:将配置文件方案一:将配置文件php.ini中的中的magic_quotes_gpc选项设置为开选项设置为开启,即启,即magic_quotes_gpc=On,这样,这样PHP预处理器就自动将预处理器就自动将GET或或POST提交的特殊字符转义。提交的特殊字符转义。 方案二:当配置文件方案二:当配置文件php,ini中的中的magic_quotes_gpc选项设置为关选项设置为关闭时,使用闭时,使用addslashes()函数将函数将GET 或或POST提交的特殊字符转义。提交的特殊字符转义。 本讲总结本讲总结本讲总结本讲总结 (1) 用户注册系统的设计方法以及实现方法;用户注册系统的设计方法以及实现方法;内蒙古科技大学内蒙古科技大学 工程训练中心工程训练中心