当前位置:文档之家› PHP登陆注册系统

PHP登陆注册系统

该系统为简单的注册登录系统,包含的功能有
1.用户注册
2.给用户邮箱发送激活码
3.用户登录
4.保存用户登录信息,自动登录
5.用户修改密码
6.用户密码找回
7.用户注销登录
主要代码文件有:
config.php
该文件为连接数据库文件,连接到mysql并选择数据库

install.php
该文件为自动安装数据库表文件,系统所需的用户信息存储表

SignUp.php
该文件为用户注册的界面,html代码,数据处理文件add.php

add.php
该文件为用户注册的数据处理文件,检查用户注册各数据是否合法,注册成功,

将数据写进数据库表,并发送激活码到用户邮箱,自动跳转到激活界面

activate.php,提示用户激活账号

activate.php
该文件为用户激活界面,html代码,激活数据处理文件active_go.php
该界面同时可以重新发送激活码,重新发送激活码数据处理文件

Resend_actNum.php

Resend_actNum.php
该文件为重新发送激活码文件,用户输入用户名和注册邮箱,点击重新发送即可

获得激活码邮件

active_go.php
该文件为激活数据处理文件,用户激活成功,将数据库表中激活码置为0,自动跳

转到登录界面

login.php
用户登录界面,首先判断session会话变量中是否存储了登录信息,如果有,则自

动登录,登录数据处理文件login_go.php

login_go.php
用户登录数据处理文件,需要判断用户是否激活,用户名是否存在,密码是否匹

配等,同时创建会话,保存登录信息,如果用户登录时选择保存登录信息,则发

送cookie到客户端

forgot.php
找回密码界面,html代码。用户登录时忘记密码,则可以通过输入用户名和注册

邮箱获取密码,数据处理文件为forgot_go.php

forgot_go.php
用户找回密码数据处理文件,如果用户名和邮箱检测正确,则发送密码到邮箱,

然后跳转到登录页面重新登录

manage.php
用户管理页面,导航框架,点击左边的链接,右边会显示相应的网页

manage_menu.php
用户管理页面左边的导航页面,显示各个功能菜单,点击相应的链接,右边显示

响应的网页

change_password.php
在manage文件夹下,修改密码的界面,在用户管理左边导航点击修改密码,右边

页面会跳转到该页面修改密码,数据处理文件为change_password_go.php

change_password_go.php
在manage文件夹下,用户修改密码数据处理文件,如果数据检测正确,则修改数

据库表中的密码,同时也要修改session会话中的密码,修改成功返回到默认管理

页面,不成功则返回重新输入

menu_default.php
在manage文件夹下,用户管理的默认管理页面,点击管理页面左边导航我的地盘

链接也会跳转到该页面,该页面代码未完

善,以后扩展

login_off.php
在manage文件夹下,用户注销登录文件。在管理页面左边导航点击退出登录,会

执行该文件,然后直接跳转到登录界面。注销登录,只要设置客户端cookie过期

,删除会话。




PHP注册登录系统------config.php

$server="localhost";
$username="root";
$password="";
$database="";
if($database=="")
{
$query="use members";
if(mysql_query($query)==null)
{
$query="create database members";
if(mysql_query($query)==1)
{
//创建数据库成功,开始连接数据库
$database="members";
$conn=mysql_connect($server,$username,$password)
or die("could not connect mysql");
mysql_select_db($database,$conn)
or die("could not open database");
}
else
{
echo "Error while creating database (Error".mysql_errno().":\"".mysql_error()."\")
";//创建数据库出错
}
}
else
{
//如果数据库中存在members数据库
$database="members";
$conn=mysql_connect($server,$username,$password)
or die("could not connect mysql");
mysql_select_db($database,$conn)
or die("could not open database");
}
}
else
{
//如果选择的是别的数据库,也就是说$database不为空
$conn=mysql_connect($server,$username,$password)
or die("could not connect mysql");
mysql_select_db($database,$conn)
or die("could not open database");
}
?>


PHP注册登录系统-----install.php

//导入数据库连接文件
include 'config.php';
//自动安装数据库表
$query="create table als_signup (
UserName varchar(20),
Password varchar(20),
Email varchar(20),
actNum varchar(20),
UserLevel tinyint,
SignUpdate varchar(20),
LastLogin varchar(20),
LastLoginFail varchar(20),
NumLoginFail tinyint
)";
$result=mysql_query($query);
if($result==1)
{
echo "signup table succesfully created.
";
}
else
{
echo "Error while creating table(ErrorNumber".mysql_errno().":\"".mysql_error()."\")
";
}
?>



PHP注册登录系统-----SignUp.php



用户注册




新用户注册




















用户名
密 码
确认密码
Email



如果您已经有账号,请点击这里登陆。

form>





PHP注册登录系统-----add.php

//用户注册以后的数据处理文件。需要先检查数据合法性,然后写入数据库
//获取注册用户提交的数据
$UserName1=$_POST["UserName"];//用户名
$Password1=$_POST["Password"];//密码
$ConfirmPassword1=$_POST["ConfirmPassword"];//确认密码
$Email1=$_POST["Email"];//邮箱
//定义保存激活码变量
$actnum="";
//导入数据库文件
include 'config.php';
//定义产生激活码函数
function Check_actnum()
{
$chars_for_actnum=array("A","B","C","D","E","F","G","H","I","J","K","L",
"M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d",
"e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v",
"w","x","y","z","1","2","3","4","5","6","7","8","9","0"
);
for ($i=1;$i<=20;$i++)//生成一个20个字符的激活码
{
$actnum.=$chars_for_actnum[mt_rand(0,count($chars_for_actnum)-1)];
}
return $actnum;
}
//判断用户名函数
function Check_username($UserName)//参数为用户注册的用户名
{
//用户名三个方面检查
//是否为空 字符串检测 长度检测
$Max_Strlen_UserName=16;//用户名最大长度
$Min_Strlen_UserName=4;//用户名最短长度
$UserNameChars="^[A-Za-z0-9_-]";//字符串检测的正则表达式
$UserNameGood="用户名检测正确";//定义返回的字符串变量
if($UserName=="")
{
$UserNameGood="用户名不能为空";
return $UserNameGood;
}
if(!ereg("$UserNameChars",$UserName))//正则表达式匹配检查
{
$UserNameGood="用户名字符串检测不正确";
return $UserNameGood;
}
if (strlen($UserName)<$Min_Strlen_UserName || strlen($UserName)>$Max_Strlen_UserName)
{
$UserNameGood="用户名字长度检测不正确";
return $UserNameGood;
}
return $UserNameGood;
}
//判断密码是否合法函数
function Check_Password($Password)
{
//是否为空 字符串检测 长度检测
$Max_Strlen_Password=16;//密码最大长度
$Min_Strlen_Password=6;//密码最短长度
$PasswordChars="^[A-Za-z0-9_-]";//密码字符串检测正则表达式
$PasswordGood="密码检测正确";//定义返回的字符串变量
if($Password=="")
{
$PasswordGood="密码不能为空";
return $PasswordGood;
}
if(!ereg("$PasswordChars",$Password))
{
$PasswordGood="密码字符串检测不正确";
return $PasswordGood;
}
if(strlen($Password)<$Min_Strlen_Password || strlen($Password)>$Max_Strlen_Password)
{
$PasswordGood="密码长度检测不正确";
return $PasswordGood;
}
return $PasswordGood;
}
//判断邮箱是否合法函数
function Check_Email($Email)
{
$EmailChars="^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$";//正则表达式判断是否是合法邮箱地址
$EmailGood="邮箱检测正确";
if($Email=="")
{
$EmailGood="邮箱不能为空";
return $EmailGood;
}
if(!ereg("$EmailChars",$Email))//正则表达式匹配检查
{


$EmailGood="邮箱格式不正确";
return $EmailGood;
}
return $EmailGood;
}
//判断两次密码输入是否一致
function Check_ConfirmPassword($Password,$ConfirmPassword)
{
$ConfirmPasswordGood="两次密码输入一致";
if($Password<>$ConfirmPassword)
{
$ConfirmPasswordGood="两次密码输入不一致";
return $ConfirmPasswordGood;
}
else
return $ConfirmPasswordGood;
}
//调用函数,检测用户输入的数据
$UserNameGood=Check_username($UserName1);
$PasswordGood=Check_Password($Password1);
$EmailGood=Check_Email($Email1);
$ConfirmPasswordGood=Check_ConfirmPassword($Password1,$ConfirmPassword1);
$error=false;//定义变量判断注册数据是否出现错误
if($UserNameGood !="用户名检测正确")
{
$error=true;//改变error的值表示出现了错误
echo $UserNameGood;//输出错误信息
echo "
";
}
if($PasswordGood !="密码检测正确")
{
$$error=true;
echo $PasswordGood;
echo "
";
}
if($EmailGood !="邮箱检测正确")
{
$error=true;
echo $EmailGood;
echo "
";
}
if ($ConfirmPasswordGood !="两次密码输入一致")
{
$error=true;
echo $ConfirmPasswordGood;
echo "
";
}
//判断数据库中用户名和email是否已经存在
$query="select * from als_signup where UserName='$UserName1' or Email='$Email1'";
$result=mysql_query($query);
$row=mysql_fetch_array($result);
while ($row)
{
if ($row["UserName"]==$UserName1)
{
$error=true;
echo "用户名已存在
";
}
if ($row["Email"]==$Email1)
{
$error=true;
echo "用户邮箱已经注册
";
}
}
//如果数据检测都合法,则将用户资料写进数据库表
if ($error==false) //$error==false表示没有错误
{
$actnum=Check_actnum();//调用激活码函数
$Datetime=date("d-m-y G:i");//获取注册时间,也就是数据写入到用户表的时间
$query="insert into als_signup (UserName,Password,Email,actNum,UserLevel,SignUpdate,LastLogin,LastLoginFail,NumLoginFail)
values ('$UserName1','$Password1','$Email1','$actnum','1','$Datetime','0','0','0')";
$result=mysql_query($query);
$to=$Email1;//用户注册的邮箱
$subject="激活码";
$message="您的激活码为$actnum";
$header="From:kristin-wang@https://www.doczj.com/doc/8318198592.html,"."\r\n";//邮件头信息
if(mail($to,$subject,$message,$header))//php中mail()函数用来发送邮件,需要更改php.ini文件,最好安装SMTP服务器
{
//产生链接,链接到激活页面
?>
请登陆邮箱获取激活码。然后点击这里激活。
}
}
?>



PHP注册登录系统-----activate.php



注册账号激活



注册账号激活



谢谢注册,激活码已经被发送到您的邮箱!

用户名:

"UserName" type="text" id="UserName" size="20">

激活码:









如果没有收到邮件,可以再次发送邮件:

用户名:

邮  箱:












PHP注册登录系统-----Resend_actNum.php



重新发送激活码



//获取用户名,激活码,邮件地址
$UserName1=$HTTP_POST_VARS["UserName"];
$actNum1=$HTTP_POST_VARS["actNum"];
$Email1=$HTTP_POST_VARS["Email"];
$Resend=$HTTP_POST_VARS["Resend"];//检查是否需要重发激活码.在点击重新发送激活码后传递的隐藏数据
//如果用户要求再次发送激活码
include 'config.php';
if ($Resend==1)
{
$query="select * from als_signup where UserName='$UserName1' and Email='$Email1'";
$result=mysql_query($query);
$row=mysql_fetch_array($result);
if ($row)
{
$actNum=$row["actNum"];
$subject="激活码";
$message="您的激活码为:$actNum";
mail($Email1,$subject,$message);
?>
激活码已经重新发送,请登陆邮箱获取激活码。

点击这里重新激活。
}
else
{
?>
用户名或者电子邮件错误。

点击这里返回。
}
}
?>







PHP注册登录系统-----active_go.php



激活



//获取用户名,激活码
$UserName1=$HTTP_POST_VARS["UserName"];
$actNum1=$HTTP_POST_VARS["actNum"];
include 'config.php';
//检查用户名和激活码是否正确
$query="select * from als_signup where UserName='$UserName1' and actNum='$actNum1'";
$result=mysql_query($query);
$row=mysql_fetch_array($result);
if ($row)
{
//如果用户名和激活码正确,成功激活,将数据库表中激活码设为0
$query="update als_signup set actNum='0' where UserName='$UserName1'";
$result=mysql_query($query);
?>
您已经成功激活账号。

请点击这里登陆
}
else
{
echo "用户名或者激活码错误,请返回重新输入
";
?>
返回
}
?>








PHP注册登录系统-----login.php

//在显示登录界面之前,首先判断是否保存了用户登录信息,如果有,则自动登录
include 'config.php'

;
session_start();//启动会话
$query="select * from als_signup where UserName='{$_SESSION['UserName']}' and Password='{$_SESSION['Password']}'";
$result=mysql_query($query);
$row=mysql_fetch_array($result);
if ($row)
{
//如果session会话变量用户名与密码匹配,则自动登录,直接跳转到管理页面
header("refresh:1;url=http://localhost/members/manage.php");
exit;
}
?>


用户登录



用户名:

密  码:

保存登录信息(7天)




忘了密码?
注册新用户









PHP注册登录系统-----login_go.php

include 'config.php';
session_start();//启动会话
//获取用户的登录信息。用户名,密码,是否保存信息
$UserName1=$HTTP_POST_VARS["UserName"];
$Password1=$HTTP_POST_VARS["Password"];
$Remember=$HTTP_POST_VARS["KeepInfo"];
//如果用户点击了保存登录信息,将Remember置为1,否则置为0
if ($Remember=="KeepInfo")
{
$Remember="1";
}
else
{
$Remember="0";
}
//查询用户名是否存在
$query="select * from als_signup where UserName='$UserName1'";
$result=mysql_query($query);
$row=mysql_fetch_array($result);
if ($row)
{
//查询用户是否已经激活
if ($row["actNum"]=="0")
{
//判断登录失败次数是否小于等于5次
if ($row["NumLoginFail"]<=5)
{
//判断密码是否正确
if ($row["Password"]==$Password1)
{
//如果密码正确,修改最近登录时间,将登录失败信息清除
$datetime=date("d-m-Y G:i");
$query="update als_signup set LastLogin='$datetime' where UserName='$UserName1'";
$result=mysql_query($query);
$query="update als_signup set NumLoginFail='0' where UserName='$UserName1'";
$result=mysql_query($query);
//创建会话,保存登录信息
session_unset();//删除会话
session_destroy();
session_register("Password");//创建会话变量,保存密码
$HTTP_SESSION_VARS["Password"]=$Password1;
session_register("UserName");//保存用户名
$HTTP_SESSION_VARS["UserName"]=$UserName1;
//发送cookie到客户端,密码被加密
if ($Remember=="1")
{
setcookie("RememberCookieUserName",$UserName1,(time()+604800));
setcookie("RememberCookiePassword",md5($Password1),(time()+604800));
}
//登录成功,页面转到管理页面
header("refresh:1;url=http://localhost/members/manage.php");
exit;
}
else
{
//密码错误,登录失败
//检查上次登录失败时间是否在5min

之内,如果不是,则登录失败次数增加1
$datetime=date("d-m-Y G:i ",strtotime("-5 minutes"));//获取5分钟以前的时间
$timenow=date("d-m-Y G:i ");//获取现在的时间
if($row["LastLoginFail"]<$datetime)//不在5min之内
{
//登录失败次数加1
$query="update als_signup set NumLoginFail=NumLoginFail+1 where UserName='$UserName1'";
$result=mysql_query($query);
//修改登录失败时间
$query="update als_signup set LastLoginFail='$timenow' where UserName='$UserName1'";
$result=mysql_query($query);
//返回到登录页面
header("refresh:5;url=http://localhost/members/login.php");
echo "密码错误,请重新输入
5秒后自动返回";
}
else //在5min之内,只修改登录失败时间
{
$query="update als_signup set LastLoginFail='$timenow' where UserName='$UserName1'";
$result=mysql_query($query);
//返回到登录页面
header("refresh:5;url=http://localhost/members/login.php");
echo "密码错误,请重新输入
5秒后自动返回";
}
}
}
else
{
//失败次数超过5次
//检查时间,如果上次登录失败在半个小时前,则解锁,给用户一次重新登录机会。只有一次机会
$datetime=date("d-m-Y G:i, ",strtotime("-30 minutes"));
if($row["LastLoginFail"]<$datetime) //半个小时以前
{
$query="update als_signup set NumLoginFail='5' where UserName='$UserName1'";
$result=mysql_query($query);
}
else
{
//半个小时内,则锁定帐户,返回到登录页面,半个小时后解锁
$timenow=date("d-m-Y G:i ");
$query="update als_signup set LastLoginFail='$timenow' where UserName='$UserName1'";
$result=mysql_query($query);
header("refresh:5;url=http://localhost/members/login.php");
echo "您的账号目前被锁定,半个小时后自动解锁。请解锁后登录。";
echo "
5秒后自动返回";
exit;
}
}
}
//激活码不为0.用户需要激活
else
{
header("refresh:5;url=http://localhost/members/activate.php");
echo "您的账号没有激活,请激活后登陆。
5秒后自动跳转到激活页面。";
}
}
else
{
header("refresh:5;url=http://localhost/members/login.php");
echo "您的用户名不正确,请返回重新输入。
5秒后自动返回。";
}
?>





PHP注册登录系统-----forgot.php




密码找回


找回密码




返回登录页面


用户名:

邮  箱:

ue="发送密码" size="20">










PHP注册登录系统-----forgot_go.php

//获取用户名,邮箱
$UserName1=$HTTP_POST_VARS["UserName"];
$Email1=$HTTP_POST_VARS["Email"];
include 'config.php';
//查询用户名和邮箱是否存在并且匹配
$query="select * from als_signup where UserName='$UserName1' and Email='$Email1'";
$result=mysql_query($query);
$row=mysql_fetch_array($result);
if ($row)
{
//查询成功,则发送密码到用户注册邮箱
$to=$Email1;
$subject="密码";
$message="您的密码为". $row["Password"];
if (mail($to,$subject,$message))
{
header("refresh:5;url=http://localhost/members/login.php");
echo "密码已经发送到您的邮箱,请查收
5秒后自动跳转到登录页面";
exit;
}
}
else
{
header("refresh:5;url=http://localhost/members/forgot.php");
echo "用户名或者邮箱错误,请确认邮箱为注册用户时的邮箱
5秒后自动返回";
exit;
}
?>






PHP注册登录系统-----manage.php



用户管理













PHP注册登录系统-----manage_menu.php



用户管理



用户管理


我的地盘

功能菜单1

功能菜单2

功能菜单3

功能菜单4

功能菜单5

修改密码

删除账号

退出登录









PHP注册登录系统-----change_password.php



修改密码


修改密码



原始密码:


新密码:  


确认密码:












PHP注册登录系统-----change_password_go.php

hp
session_start();
//取出修改密码的数据,原始密码,新密码,确认的新密码
$OldPassword1=$HTTP_POST_VARS["OldPassword"];
$NewPassword1=$HTTP_POST_VARS["NewPassword"];
$NewPasswordAgain=$HTTP_POST_VARS["NewPasswordAgain"];
//导入数据库连接文件
include '../config.php'; //../表示上一级目录
//判断原始密码是否为空,两次输入新密码是否一致
if ($OldPassword1!="" && $NewPassword1==$NewPasswordAgain)
{
//修改表中的密码,注意用到session变量用户名和密码同时判断查询
$query="select * from als_signup where UserName='{$_SESSION['UserName']}' and Password='$OldPassword1'";
//必须要在数组前加上{},不然无法解析而报错。加上{}主要让语句识别里面是动态的数组
$result=mysql_query($query);
$row=mysql_fetch_array($result);
if ($row)
{
//修改密码,同时修改session会话变量的密码
$query="update als_signup set Password='$NewPassword1' where UserName='{$HTTP_SESSION_VARS['UserName']}'";
$result=mysql_query($query);
$HTTP_SESSION_VARS["Password"]=$NewPassword1;
//修改成功,跳转回到默认管理页面
header("refresh:3;url=http://localhost/members/manage.php");
echo "密码修改成功,3秒钟后自动返回到管理页面";
exit;
}
else
{
//原始密码输入错误,导致数据库表查询失败
//返回修改密码页面,重新输入
header("refresh:3;url=http://localhost/members/manage/change_password.php");
echo "原始密码输入错误,请重新输入
3秒钟后自动返回";
exit;
}
}
else
{
if ($OldPassword1=="")//如果原始密码为空
{
//返回修改密码页面,重新输入
header("refresh:3;url=http://localhost/members/manage/change_password.php");
echo "原始密码不能为空,请重新输入
3秒钟后自动返回";
exit;
}
else //如果新密码两次输入不一致
{
//返回修改密码页面,重新输入
header("refresh:3;url=http://localhost/members/manage/change_password.php");
echo "新密码两次输入不一致,请重新输入
3秒钟后自动返回";
exit;
}
}
?>






PHP注册登录系统-----login_off.php

//启动会话
session_start();
//将客户端cookie设置为过去时间,即过期
setcookie("RememberCookieUserName","UserName",time()-60);
setcookie("RememberCookiePassword","Password",time()-60);
//删除会话
session_unset();
session_destroy();
//回到登录界面
header("refresh:1;url=http://localhost/members/login.php");
?>








相关主题
文本预览
相关文档 最新文档