PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】


Posted in PHP onFebruary 25, 2019

本文实例讲述了PHP登录验证功能。分享给大家供大家参考,具体如下:

登录界面

PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】

PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】

PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】

PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】

具体实现方法如下:

login.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<form method="post" action="doLogin.php">
  <input type="text" placeholder="用户名" name="username"><br><br>
  <input type="password" placeholder="密码" name="password"><br><br>
  <input type="text" placeholder="验证码" name="verifycode" class="captcha"><br><br>
  <img id="captcha_img" src="captcha.php?r=<?php echo rand();?>" alt="验证码">
  <label><a href="javascript:void(0)" rel="external nofollow" onclick="document.getElementById('captcha_img').src='captcha.php?r='+Math.random()">换一个</a> </label><br>
  <label><input type="checkbox" name="autologin[]" value="1"/>自动登录</label><br>
  <button type="submit">登录</button>
</form>
</body>
</html>

doLogin.php

<?php
header("Content-type:text/html;charset=UTF-8");
require "mysql.php";      //导入mysql.php访问数据库
session_start();        //开启会话一获取到服务器端验证码
$username=$_POST['username'];
$password=$_POST['password'];
$autologin=isset($_POST['autologin'])?1:0;   //获取是否选择了自动登录
$verifycode=$_POST['verifycode'];
$code=$_SESSION['code'];    //获取服务器生成的验证码
/*
 * 首先进行判空操作,通过后进行验证码验证,通过后再进行数据库验证。
 * 手机号码和邮箱验证可根据需要自行添加
 * */
if(checkEmpty($username,$password,$verifycode)){
  if(checkVerifycode($verifycode,$code)){
    if(checkUser($username,$password)){
      $_SESSION['username']=$username; //保存此时登录成功的用户名
      if($autologin==1){        //如果用户勾选了自动登录就把用户名和加了密的密码放到cookie里面
        setcookie("username",$username,time()+3600*24*3);  //有效期设置为3天
        setcookie("password",md5($password),time()+3600*24*3);
      }
      else{
        setcookie("username","",time()-1);  //如果没有选择自动登录就清空cookie
        setcookie("password","",time()-1);
      }
      header("location: index.php ");      //全部验证都通过之后跳转到首页
    }
  }
}
//方法:判断是否为空
function checkEmpty($username,$password,$verifycode){
  if($username==null||$password==null){
    echo '<html><head><Script Language="JavaScript">alert("用户名或密码为空");</Script></head></html>' . "<meta http-equiv=\"refresh\" content=\"0;url=login.html\">";
  }
  else{
    if($verifycode==null){
      echo '<html><head><Script Language="JavaScript">alert("验证码为空");</Script></head></html>' . "<meta http-equiv=\"refresh\" content=\"0;url=login.html\">";
    }
    else{
      return true;
    }
  }
}
//方法:检查验证码是否正确
function checkVerifycode($verifycode,$code){
  if($verifycode==$code){
    return true;
  }
  else{
    echo '<html><head><Script Language="JavaScript">alert("验证码错误");</Script></head></html>' . "<meta http-equiv=\"refresh\" content=\"0;url=login.html\">";
  }
}
//方法:查询用户是否在数据库中
function checkUser($username,$password){
  $conn=new Mysql();
  $sql="select * from user where name='{$username}' and password='{$password}';";
  $result=$conn->sql($sql);
  if($result){
    return true;
  }
  else{
    echo '<html><head><Script Language="JavaScript">alert("用户不存在");</Script></head></html>' . "<meta http-equiv=\"refresh\" content=\"0;url=login.html\">";
  }
  $conn->close();
}
//方法:手机格式验证
function checkPhoneNum($phonenumber){
  $preg="/^1[34578]{1}\d{9}$/";
  if(preg_match($preg,$phonenumber)){
    return ture; //验证通过
  }else{
    echo '<html><head><Script Language="JavaScript">alert("手机号码格式有误");</Script></head></html>' . "<meta http-equiv=\"refresh\" content=\"0;url=login.html\">";//手机号码格式不对
  }
}
//方法:邮箱格式验证
function checkEmail($email){
  $preg = '/^(\w{1,25})@(\w{1,16})(\.(\w{1,4})){1,3}$/';
  if(preg_match($preg, $email)){
    return true;
  }else{
    echo '<html><head><Script Language="JavaScript">alert("y邮箱格式有误");</Script></head></html>' . "<meta http-equiv=\"refresh\" content=\"0;url=login.html\">";
  }
}

logout.php

<?php
//退出登录并跳转到登录页面
unset($_SESSION['username']);
setcookie("username","",time()-1);  //清空cookie
setcookie("password","",time()-1);
header("location: login.html ");

index.php

<?php
session_start();
if(empty($_COOKIE['username'])&&empty($_COOKIE['password'])){
  if(isset($_SESSION['username']))
    echo "登录成功,欢迎您".$_SESSION['username']."<a href='logout.php'>退出登录</a>";
  else
    echo "你还没有登录,<a href='login.html'>请登录</a>";
}
else
  echo "登录成功,欢迎您:".$_COOKIE['username']."<a href='logout.php'>退出登录</a>";

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP字符转义相关函数小结(php下的转义字符串)
Apr 12 PHP
ie6 动态缩略图不显示的原因
Jun 21 PHP
php 魔术函数使用说明
Feb 21 PHP
php 将字符串按大写字母分隔成字符串数组
Apr 30 PHP
Php header()函数语法及使用代码
Nov 04 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
php 输出json及显示json中的中文汉字详解及实例
Nov 09 PHP
PHP/HTML混写的四种方式总结
Feb 27 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
PHP双向链表定义与用法示例
Jan 31 PHP
PHPMAILER实现PHP发邮件功能
Apr 18 PHP
解决php扩展安装不生效问题
Oct 25 PHP
PHP封装的分页类与简单用法示例
Feb 25 #PHP
PHP实现的用户注册表单验证功能简单示例
Feb 25 #PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 #PHP
Laravel核心解读之异常处理的实践过程
Feb 24 #PHP
PHP通过GD库实现验证码功能示例
Feb 23 #PHP
php中file_get_contents()函数用法实例
Feb 21 #PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 #PHP
You might like
PHP利用COM对象访问SQLServer、Access
2006/10/09 PHP
ThinkPHP3.1数据CURD操作快速入门
2014/06/19 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
javascript 年月日联动实现核心代码
2009/12/21 Javascript
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
python获取list下标及其值的简单方法
2016/09/12 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
django框架创建应用操作示例
2019/09/26 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
python属于软件吗
2020/06/18 Python
Python读写Excel表格的方法
2021/03/02 Python
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
护理人员的自我评价分享
2014/03/15 职场文书
安全责任协议书
2014/04/21 职场文书
淘宝店策划方案
2014/06/07 职场文书
班级标语大全
2014/06/21 职场文书
庐山导游词
2015/02/03 职场文书
信用卡收入证明范本
2015/06/12 职场文书