• php实现记住密码下次自动登陆


    这篇博客里面还写到 实现“记住我的登录状态”的功能方法,简言之,就是对首先对session进行用户信息赋值,检测session,失效后,利用cookie对其赋值;

      在实现过程中,根据网上一些代码贴,整理出以下代码:另外可以参考PHP 登录记住密码实现思路

    在登录login.php页面中,进行表单设置:

    复制代码
    <?php
    session_start();
    ?>
    <form action="login_chk.php" method="post">   <div class="inpu">     <input id="username" name="username" type="text" class="username" value="<?php if($_SESSION['type'] == 1){echo $_SESSION['number'];}else{echo $_SESSION['name'];}?>" placeholder="用户名">   </div>   <div class="inpu">     <input id="pass" name="pass" type="password" class="password" placeholder="登录密码" >   </div>   <div class="remember">     <input class="inpu_remember" type="checkbox" name="remember" ><label>记住我</label>   </div>   <button id="submit" type="submit">登录</button> </form>
    复制代码

    login_chk.php页面用于验证登录页面表单信息,并创建cookie:

    复制代码
     1 <?php
     2 header("Content-type:text/html;charset=gb2312");
     3 
     4 session_start();
     5 include_once("conn/conn.php");  //加载数据库连接文件
     6 
     7 error_reporting(0);
     8 
     9 if(empty($_POST['username']) or empty($_POST['pass'])){
    10     echo "<script language='javascript'>alert('用户名和密码不能为空!');history.go(-1);</script>";
    11 }
    12 else{ 
    13     $username=$_POST['username'];
    14     $pass=$_POST['pass'];
    15     $password = md5($pass);
    16     $remember = $_POST['remember']; 
    17     
    18     $testrst = sqlsrv_query($conn, "select * from Employee where name like '$username' or number like '$username'");    //执行查询操作  
    19     
    20     if(!empty($remember)){     //如果用户选择了,记录登录状态就把用户名和加了密的密码放到cookie里面 
    21         setcookie("username", $username, time()+3600*24*30); 
    22         setcookie("password", $pass, time()+3600*24*30); 
    23     }  
    24     
    25     
    26     
    27      
    28     
    29     if(sqlsrv_has_rows($testrst)){
    30         
    31         $rst = sqlsrv_query($conn, "select * from Employee where (name like '$username' or number like '$username') and pwd = '$password'");
    32         
    33         
    34         if(sqlsrv_has_rows($rst)){                                                              //判断登录用户名和密码是否正确
    35             $adminrow = sqlsrv_fetch_array($rst);
    37             $userwhethe = 0;
    38             $_SESSION['id']=$adminrow[0];      
    41             $_SESSION['number']=$adminrow[1];
    42             $_SESSION['name']=$adminrow[2];
    43             if($username == $adminrow[1]){
    44               $_SESSION['type'] = 1;
    45             }else{
    46                $_SESSION['type'] = 2;
    47             }57 
    59               echo "<meta http-equiv="refresh" content="0;url=menu.php" />";
    60 64         }else{
    65           echo "<script>alert('密码错误,请重新登录。');history.go(-1);</script>";
    66         }
    67    }else{
    68        echo "<script>alert('该用户名不存在!,请重新登录。');history.go(-1);</script>";
    69    }
    70 }
    71 
    72 ?>
    复制代码

    menu.php以及其他功能页面都会检查一遍session:

    复制代码
     1 <?php
     2 session_start();
     3 include_once("conn/conn.php");
     4 error_reporting(0);
     5 if(empty($_SESSION['name']) and empty($_SESSION['id'])){              //判断当前用户是否为登录状态
     6 echo "<script>alert('请登录后再进行执行操作!');history.go(-1);</script>";
     7 }else{
     8 ?>
     9 网页主体
    10 ?>
    复制代码

    至于检验sessionf,失效利用cookie进行赋值的操作,在index1.php(index的检查页)中实现:

    复制代码
     1 <?php
     2 session_start();
     3 
     4  if(empty($_SESSION['username'])){                                      //检查一下session是不是为空 
     5      if(empty($_COOKIE['username']) || empty($_COOKIE['password'])){  
     6         header("location:login.php");                         
     7      }else{                                                               
     8         $_SESSION['name'] = $_COOKIE['username'];   
     9         header("location:menu.php"); 
    10     } 
    11       
    12  }
    13 ?>
    复制代码

    另外,考虑到用户有退出系统或者注销再登录的需要,设置了退出页面logout.php:

    复制代码
    1 <?php
    2 session_start();
    3 unset($_SESSION['username']);
    4 unset($_SESSION['password']);
    5 setcookie('username','',0);
    6 setcookie('password','',0);
    7 header("location:index.php");
    8 ?> 
    复制代码

      实现后,使用流畅。但对密码的cookie和session保存感觉不是很恰当,在用户登录界面也没有对密码表单进行值得默认保存,这个方面的功能还需要完善。

  • 相关阅读:
    水平居中、垂直居中,总有一款适合你的
    HTML利用posotion属性定位 小技巧
    angular2 如何使用websocket
    angular2 引入jquery
    HTML+CSS学习笔记
    用eclipse 搭建struts2环境
    html对URL传参数进行解析
    angular2上传图片
    当div元素内的内容超出其宽度时,自动隐藏超出的内容
    关于引用对象的使用的一点小理解
  • 原文地址:https://www.cnblogs.com/gyrgyr/p/10178104.html
Copyright © 2020-2023  润新知