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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
用php和MySql来与ODBC数据连接
Oct 09 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
Apr 28 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
php出现web系统多域名登录失败的解决方法
Sep 30 PHP
php使用fputcsv()函数csv文件读写数据的方法
Jan 06 PHP
php输出xml属性的方法
Mar 19 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
PHP实现的简单网络硬盘
Jul 29 PHP
基于PHP实现栈数据结构和括号匹配算法示例
Aug 10 PHP
PHP+MySQL实现消息队列的方法分析
May 09 PHP
YII框架实现自定义第三方扩展操作示例
Apr 26 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
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
php strrpos()与strripos()函数
2013/08/31 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
input 高级限制级用法
2009/03/26 Javascript
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
详解vue2.0模拟后台json数据
2019/05/16 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
Python实现感知机(PLA)算法
2017/12/20 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
高三毕业生自我鉴定
2013/12/20 职场文书
财会自我鉴定范文
2013/12/27 职场文书
商场主管竞聘书
2014/03/31 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
男性健康日的活动方案
2014/08/18 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
服务承诺书
2015/01/19 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
周末问候语大全
2015/11/10 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android