zoukankan      html  css  js  c++  java
  • php实现记住密码自动登录方法

    php实现记住密码自动登录方法不止一个,下面出现有二个emptyempty,其实是一个,那是因为代码高亮有bug。希望对大家有帮助。

    一,用户登录的check

    代码如下:

    //检查用户是否登录
    function checklogin(){
    if(emptyempty($_SESSION['user_info'])){ //检查一下session是不是为空
    if(emptyempty($_COOKIE['username']) || emptyempty($_COOKIE['password'])){ //如果session为空,并且用户没有选择记录登录状
    header(”location:login.php?req_url=”.$_SERVER['REQUEST_URI']); //转到登录页面,记录请求的url,登录后跳转过去,用户体验好。
    }else{ //用户选择了记住登录状态
    $user = getUserInfo($_COOKIE['username'],$_COOKIE['password']); //去取用户的个人资料
    if(emptyempty($user)){ //用户名密码不对没到取到信息,转到登录页面
    header(”location:login.php?req_url=”.$_SERVER['REQUEST_URI']);
    }else{
    $_SESSION['user_info'] = $user; //用户名和密码对了,把用户的个人资料放到session里面
    }
    }
    }
    }


    在访问后台的每个页面时,都要先进行上面的检查

    二,用户提交登录信息
    当用户填写用户名和密码后就提交到这儿来,

    代码如下:

    $username = trim($_POST['username']);
    $password = md5(trim($_POST['password']));
    $validatecode = $_POST['validateCode'];
    $ref_url = $_GET['req_url'];
    $remember = $_POST['remember'];

    $err_msg = ”;
    if($validatecode!=$_SESSION['checksum']){
    $err_msg = “验证码不正确”;
    }elseif($username==” || $password==”){
    $err_msg = “用户名和密码都不能为空”;
    }else{
    $row = getUserInfo($username,$password);

    if(emptyempty($row)){
    $err_msg = “用户名和密码都不正确”;
    }else{
    $_SESSION['user_info'] = $row;
    if(!emptyempty($remember)){ //如果用户选择了,记录登录状态就把用户名和加了密的密码放到cookie里面
    setcookie(”username”, $username, time()+3600*24*365);
    setcookie(”password”, $password, time()+3600*24*365);
    }
    if(strpos($ref_url,”login.php”) === false){
    header(”location:”.$ref_url);
    }else{
    header(”location:main_user.php”);
    }
    }
    }
    $username = trim($_POST['username']);
    $password = md5(trim($_POST['password']));
    $validatecode = $_POST['validateCode'];
    $ref_url = $_GET['req_url'];
    $remember = $_POST['remember'];

    $err_msg = ”;
    if($validatecode!=$_SESSION['checksum']){
    $err_msg = “验证码不正确”;
    }elseif($username==” || $password==”){
    $err_msg = “用户名和密码都不能为空”;
    }else{
    $row = getUserInfo($username,$password);

    if(empty($row)){
    $err_msg = “用户名和密码都不正确”;
    }else{
    $_SESSION['user_info'] = $row;
    if(!empty($remember)){ //如果用户选择了,记录登录状态就把用户名和加了密的密码放到cookie里面
    setcookie(”username”, $username, time()+3600*24*365);
    setcookie(”password”, $password, time()+3600*24*365);
    }
    if(strpos($ref_url,”login.php”) === false){
    header(”location:”.$ref_url);
    }else{
    header(”location:main_user.php”);
    }
    }
    }


    关于$ref_url简单解释一下,假如:用户A访问b.php,但是A用户没有登录,跳转到登录页面login.php,在登录页面填完用户和密码后, 确定后又跳转到b.php这个页面,而不是跳转一个默认的页面main_user.php。因为b.php是用户A想去的那个页面,所以用户体验会好一 点。

    三,当用户点退出时,清出记录登录状态

    为什么要这样做呢,因为如果有别人用你的电脑的话,他们有可能会浏览到你的个人隐私,所以当用户特意点了退出时,最好是把记录登录状态取消掉。

    代码如下:

    //退出登录
    function logout(){
    unset($_SESSION['user_info']);
    if(!emptyempty($_COOKIE['username']) || emptyempty($_COOKIE['password'])){
    setcookie(”username”, null, time()-3600*24*365);
    setcookie(”password”, null, time()-3600*24*365);
    }
    }

  • 相关阅读:
    php单元测试
    git配置本地环境(phpstudy/tortoisegit/git等)
    xp/win7中系统安装memcached服务,卸载memcached服务,以及删除memcached服务
    memcached装、启动和卸载
    如何安装memcached
    三元运算符、逻辑运算符
    移动端页面怎么适配ios页面
    javascript正则表达式——元字符
    一个div添加多个背景图片
    GNU Screen使用入门
  • 原文地址:https://www.cnblogs.com/xingmeng/p/2792322.html
Copyright © 2011-2022 走看看