PHP 用户注册与登录.docx

上传人:b****8 文档编号:30660117 上传时间:2023-08-19 格式:DOCX 页数:21 大小:27.27KB
下载 相关 举报
PHP 用户注册与登录.docx_第1页
第1页 / 共21页
PHP 用户注册与登录.docx_第2页
第2页 / 共21页
PHP 用户注册与登录.docx_第3页
第3页 / 共21页
PHP 用户注册与登录.docx_第4页
第4页 / 共21页
PHP 用户注册与登录.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

PHP 用户注册与登录.docx

《PHP 用户注册与登录.docx》由会员分享,可在线阅读,更多相关《PHP 用户注册与登录.docx(21页珍藏版)》请在冰豆网上搜索。

PHP 用户注册与登录.docx

PHP用户注册与登录

PHP用户注册与登录

前言

网站用户注册与登录是很常用的一个功能,本节教材就以此来演示一下PHP中如何开发用户注册与登录模块。

本节需要用到的重点PHP基础知识:

∙PHP中预定义$_POST和$_GET全局变量来接受用户表单和URL参数信息,关于PHP表单更多信息参见《PHP表单》。

∙PHP正则表达式用于判断用户的输入是否符合要求,关于正则表达式更多信息参见《PHP正则表达式》。

∙用户登录检测通过后以session来保持用户的登录信息,关于session更多信息参见《PHPSession》或者《PHPCookie》。

需求分析

主要功能分为用户注册、用户登录、用户退出、用户中心四个部分。

用户注册

用户注册主要功能有:

1.注册信息表单填写界面javascript脚本初步检测用户输入的注册信息。

2.注册处理模块检测注册信息是否符合要求。

3.检测用户名是否已存在。

4.将注册信息写入数据表,注册成功。

用户登录

用户登录主要功能有:

1.登录表单界面javascript脚本初步检测用户输入的登录信息。

2.登录模块将用户输入信息与数据库数据进行核对。

3.登录信息正确,则提示登录成功,将用户设置为登录状态(session)。

4.登录信息不正确,则提示登录失败,用户可以再次尝试登录。

用户退出

用户退出主要功能有:

1.无条件注销session。

用户中心

用户退出主要功能有:

1.判断用户是否登录,如果没有登录,则转向到登录界面。

2.如果登录是登录状态,则读出用户相关信息。

数据表设计

根据功能需求分析,用于记用户信息的user表需要的字段如下:

字段名

数据类型

说明

uid

mediumint(8)

主键,自动增长

username

char(15)

注册用户名

password

char(32)

MD5加密后的密码

email

varchar(40)

用户Email

regdate

int(10)

用户注册时间戳

建表SQL参考如下:

CREATETABLE`user`(

`uid`mediumint(8)unsignedNOTNULLauto_increment,

`username`char(15)NOTNULLdefault'',

`password`char(32)NOTNULLdefault'',

`email`varchar(40)NOTNULLdefault'',

`regdate`int(10)unsignedNOTNULLdefault'0',

PRIMARYKEY(`uid`)

)ENGINE=MyISAMDEFAULTCHARSET=utf8AUTO_INCREMENT=1;

页面布局

各页面功能如下:

∙reg.html:

用户注册信息填写表单页面

∙conn.php:

数据库连接包含文件

∙reg.php:

用户注册处理程序

∙login.html:

用户登录表单页面

∙login.php:

用户登录表单页面

∙my.php:

用户中心

注册页面

reg.html负责收集用户填写的注册信息。

教程里只列出关键的代码片段,完整的代码附在本节最后。

注册表单

用户注册

用户名:

(必填,3-15字符长度,支持汉字、字母、数字及_)

密码:

(必填,不得少于6位)

重复密码:

电子邮箱:

(必填)

javascript检测代码

--

functionInputCheck(RegForm)

{

if(RegForm.username.value=="")

{

alert("用户名不可为空!

");

RegForm.username.focus();

return(false);

}

if(RegForm.password.value=="")

{

alert("必须设定登录密码!

");

RegForm.password.focus();

return(false);

}

if(RegForm.repass.value!

=RegForm.password.value)

{

alert("两次密码不一致!

");

RegForm.repass.focus();

return(false);

}

if(RegForm.email.value=="")

{

alert("电子邮箱不可为空!

");

RegForm.email.focus();

return(false);

}

}

//-->

CSS样式

html{font-size:

12px;}

fieldset{width:

520px;margin:

0auto;}

legend{font-weight:

bold;font-size:

14px;}

label{float:

left;width:

70px;margin-left:

10px;}

.left{margin-left:

80px;}

.input{width:

150px;}

span{color:

#;}

注册表单效果图:

数据库连接

php

$conn=@mysql_connect("localhost","root","root123");

if(!

$conn){

die("连接数据库失败:

".mysql_error());

}

mysql_select_db("test",$conn);

//字符转换,读库

mysql_query("setcharacterset'gbk'");

//写库

mysql_query("setnames'gbk'");

?

>

注册处理

reg.php负责处理用户注册信息。

注册检测

if(!

isset($_POST['submit'])){

exit('非法访问!

');

}

$username=$_POST['username'];

$password=$_POST['password'];

$email=$_POST['email'];

//注册信息判断

if(!

preg_match('/^[\w\x80-\xff]{3,15}$/',$username)){

exit('错误:

用户名不符合规定。

history.back(-1);">返回');

}

if(strlen($password)<6){

exit('错误:

密码长度不符合规定。

history.back(-1);">返回');

}

if(!

preg_match('/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/',$email)){

exit('错误:

电子邮箱格式错误。

history.back(-1);">返回');

}

本段代码首先检测是否POST提交访问该页,接下来根据注册要求(用户名3-15字符长度,支持汉字、字母、数字及_;密码不得少于6位)对用户提交的注册信息进行检测。

在检测用户名和电子邮箱时采用了正则检测,关于正则表达式更所信息请参看《PHP正则表达式》。

数据库交互

//包含数据库连接文件

include('conn.php');

//检测用户名是否已经存在

$check_query=mysql_query("selectuidfromuserwhereusername='$username'limit1");

if(mysql_fetch_array($check_query)){

echo'错误:

用户名',$username,'已存在。

history.back(-1);">返回';

exit;

}

//写入数据

$password=MD5($password);

$regdate=time();

$sql="INSERTINTOuser(username,password,email,regdate)VALUES('$username','$password','$email',

$regdate)";

if(mysql_query($sql,$conn)){

exit('用户注册成功!

点击此处登录');

}else{

echo'抱歉!

添加数据失败:

',mysql_error(),'
';

echo'点击此处

history.back(-1);">返回重试';

}

登录页面

login.html负责收集用户填写的登录信息。

用户登录

用户名:

密码:

javascript检测及CSS样式可参考reg.html,本部分略去,可直接查看最后附录的完整代码。

登录处理

login.php负责处理用户登录与退出动作。

//登录

if(!

isset($_POST['submit'])){

exit('非法访问!

');

}

$username=htmlspecialchars($_POST['username']);

$password=MD5($_POST['password']);

//包含数据库连接文件

include('conn.php');

//检测用户名及密码是否正确

$check_query=mysql_query("selectuidfromuserwhereusername='$username'andpassword='$password'limit1");

if($result=mysql_fetch_array($check_query)){

//登录成功

$_SESSION['username']=$username;

$_SESSION['userid']=$result['uid'];

echo$username,'欢迎你!

进入用户中心
';

echo'点击此处

action=logout">注销登录!


';

exit;

}else{

exit('登录失败!

点击此处

history.back(-1);">返回重试');

}

该段代码首先确认如果是用户登录的话,必须是POST动作提交。

然后根据用户输入的信息去数据库核对是否正确,如果正确,注册session信息,否则提示登录失败,用户可以重试。

该段代码需要在页面开头启用session_start()函数,参见下面退出处理代码部分。

退出处理

处理用户退出的代码跟处理登录的代码都在login.php里。

session_start();

//注销登录

if($_GET['action']=="logout"){

unset($_SESSION['userid']);

unset($_SESSION['username']);

echo'注销登录成功!

点击此处登录';

exit;

}

该段代码在处理用户登录的代码之前,只允许以login.php?

action=logout的方式访问,其他方式都认为是检测用户登录。

具体逻辑参看附录完整代码。

用户中心

my.php是用户中心,列在教程里作为用户登录检测参考。

php

session_start();

//检测是否登录,若没登录则转向登录界面

if(!

isset($_SESSION['userid'])){

header("Location:

login.html");

exit();

}

//包含数据库连接文件

include('conn.php');

$userid=$_SESSION['userid'];

$username=$_SESSION['username'];

$user_query=mysql_query("select*fromuserwhereuid=$useridlimit1");

$row=mysql_fetch_array($user_query);

echo'用户信息:


';

echo'用户ID:

',$userid,'
';

echo'用户名:

',$username,'
';

echo'邮箱:

',$row<'email'>,'
';

echo'注册日期:

',date("Y-m-d",$row['regdate']),'
';

echo'

action=logout">注销登录
';

?

>

PHP附录:

用户注册与登录完整代码

以下列出了用户注册与登录的完整代码,您也可以点击此处下载本节教程完整的源代码压缩包。

login.html

DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"

"http:

//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

//www.w3.org/1999/xhtml">

用户登录

html{font-size:

12px;}

fieldset{width:

520px;margin:

0auto;}

legend{font-weight:

bold;font-size:

14px;}

label{float:

left;width:

70px;margin-left:

10px;}

.left{margin-left:

80px;}

.input{width:

150px;}

span{color:

#;}

--

functionInputCheck(LoginForm)

{

if(LoginForm.username.value=="")

{

alert("请输入用户名!

");

LoginForm.username.focus();

return(false);

}

if(LoginForm.password.value=="")

{

alert("请输入密码!

");

LoginForm.password.focus();

return(false);

}

}

//-->

用户登录

用户名:

密码:

conn.php

php

/*****************************

*数据库连接

*****************************/

$conn=@mysql_connect("localhost","root","root123");

if(!

$conn){

die("连接数据库失败:

".mysql_error());

}

mysql_select_db("test",$conn);

//字符转换,读库

mysql_query("setcharacterset'gbk'");

//写库

mysql_query("setnames'gbk'");

?

>

reg.php

php

if(!

isset($_POST['submit'])){

exit('非法访问!

');

}

$username=$_POST['username'];

$password=$_POST['password'];

$email=$_POST['email'];

//注册信息判断

if(!

preg_match('/^[\w\x80-\xff]{3,15}$/',$username)){

exit('错误:

用户名不符合规定。

history.back(-1);">返回');

}

if(strlen($password)<6){

exit('错误:

密码长度不符合规定。

history.back(-1);">返回');

}

if(!

preg_match('/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/',$email)){

exit('错误:

电子邮箱格式错误。

history.back(-1);">返回');

}

//包含数据库连接文件

include('conn.php');

//检测用户名是否已经存在

$check_query=mysql_query("selectuidfromuserwhereusername='$username'limit1");

if(mysql_fetch_array($check_query)){

echo'错误:

用户名',$username,'已存在。

history.back(-1);">返回';

exit;

}

//写入数据

$password=MD5($password);

$regdate=time();

$sql="INSERTINTOuser(username,password,email,regdate)VALUES('$username','$password','$email',

$regdate)";

if(mysql_query($sql,$conn)){

exit('用户注册成功!

点击此处登录');

}else{

echo'抱歉!

添加数据失败:

',mys

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1