zoukankan      html  css  js  c++  java
  • PHP用户登录与注册页面

    PHP用户登录模块实现

    项目包含的功能脚本:

    login.php//登录

    reg.php//注册用户

    user_add.php//注册校验脚本

    user_login_check.php//登录校验脚本

    image.php//验证码图片生成脚本

    流程:

    设计数据库:

    包含用户uid,用户名,密码,昵称,性别,邮箱,注册时间

    sql语句如下

    create table users (uid bigint(20) not null auto_increment primary key unique key,username varchar(100) default null, userpassword varchar(100) default null, nickname varchar(100) default null, sex tinyint(1) default 0,email varchar(100) default null, regtime timestamp(14) default 0);

    注册模块:

    reg.php填写注册信息,通过js脚本判断所填写信息是否合法

    如果合法,那么提交表单,通过user_add.php进行用户的注册

    user_add.php脚本实现的功能如下:

    判断输入的信息是否合法,这个js可以实现,但是为了浏览器兼容这里用php再实现一遍js的功能

    如果合法并且以前没有注册过,那么可以注册,否则提示错误信息

    登录模块:

    login.php填写登录信息,js判断输入信息是否合法

    如果合法提交表单,通过user_login_check.php登录

    user_login_check.php实现功能如下:

    判断输入信息是否合法,与js功能相同

    如果合法并且用户名密码都对的话保存session变量,允许用户登录

    验证码模块:

    防止恶意注册生成验证码,生成的是png格式的5位数字验证码

    需要用到session变量,服务器需要安装gd库

    具体注意事项:

    1、JavaScript脚本

    <script language="javascript">

    function IsDigit(cCheck)

    {

    return(('0'<=cCheck)&&(cCheck<='9'));

    }

    function IsAlpha(cCheck)

    {

    return((('a'<=cCheck)&&(cCheck<='z'))||(('A'<=cCheck)&&(cCheck<='Z')));

    }

    function IsValid()

    {

    var struserName=reg.UserName.value;

    for(nIndex=0;nIndex<struserName.length;nIndex++)

    {

    cCheck=struserName.charAt(nIndex);

    if(!(IsDigit(cCheck)||IsAlpha(cCheck)))

    {

    return false;

    }

    }

    return true;

    }

    function chkEmail(str)

    {

    return str.search(/[w-]{1,}@[w-]{1,}.[w-]{1,}/)==0?true:false;

    }

    function docheck()///////////////This place has a very important problem.MF can't do as wo expect!

    {

    if(reg.UserName.value=="")

    {

    alert("请填写用户名");

    return false;

    }

    else if(!IsValid())

    {

    alert("用户名只能使用数字和字母");

    return false;

    }

    else if(reg.UserPassword.value=="")

    {

    alert("请填写密码");

    return false;

    }

    else if(reg.UserPassword.value!=reg.CUserPassword.value)

    {

    alert("两次密码输入不一样");

    return false;

    }

    else if (reg.NickName.value=="")

    {

    alert("请填写昵称");

    return false;

    }

    else if (reg.Email.value=="")

    {

    alert("请填写邮箱地址");

    return false;

    }

    else if (!chkEmail(reg.Email.value))

    {

    alert("请填写有效的邮箱地址!");

    return false;

    }

    else return true;

    }

    </script>

    响应js脚本的方法:<form name="reg" action="user_login_check.php" method="post" target="_self" onSubmit="return docheck()">

    在提交表单时候响应(有的浏览器在docheck()返回错误的时候任然继续提交表单,这就是为什么要在表单处理脚本里任然继续使用php进行输入信息再次验证的原因)

    登陆时候可以只验证用户名和密码

    2、数据库连接

    $strSql="";

    $database_username="root";

    $database_password="ssklzs";

    $database_name="userlog";

    $s_UserName=$_POST["UserName"];

    $s_UserPassword=$_POST["UserPassword"];

    $strSql="select * from users where username like '".$s_UserName."' and userpassword like '".$s_UserPassword."'";

    //$strSql="insert into users(username,userpassword,nickname,sex,email,regtime)values('".$s_UserName."','".$s_UserPassword."','".$s_NickName."','".$s_Sex."','".$s_Email."',now())";//now()当前系统时间

    //连接数据库

    $link=mysql_connect("localhost",$database_username,$database_password) or die("Could not connect MySQL:".mysql_error());

    mysql_select_db($database_name,$link) or die("Can not use userlog:".mysql_error());

    $result=mysql_query($strSql);

    //sql执行完毕

    if($row=mysql_fetch_object($result)){···}

    else{···}

    3、session变量设置

    session是不同php脚本间参数进行传递的通道

    session变量大致需要两个,一个用来保存验证码,一个用来记录登录的用户

    一般情况下php.ini文件的session.auto_start = 0表示session没有自动开启,所以在使用session时候需要将此数值设为1

    注意session变量的初始化和注销

    4、返回按钮

    echo ("<input type='button' name='btn' value='返回' onClick='window.history.go(-1)' />")

  • 相关阅读:
    C++之STL总结精华笔记
    [转]asp.net使用uploadify上传出现的IO Error问题
    $.post()参数及返回值
    用CSS3.0画圆
    C# 用代码返回上一页
    用js获取cookie
    html页面的局部刷新
    在Asp.Net中使用amChart统计图
    内存中DataTable去除重复行
    .net中对HTTP请求的两种请求:Get和Post的操作
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/4510375.html
Copyright © 2011-2022 走看看