如何在登录中创建记住我的函数而不使用javascript或jquery中的表单

如何在登录中创建记住我的函数而不使用javascript或jquery中的表单,javascript,jquery,login,Javascript,Jquery,Login,我几乎完成了我的项目,但我的登录规范还没有100%完成记住我的功能尚未运行 HTML 我没有在此登录页面中使用表单。 规范是,当登录时选中复选框时,必须重新标记用户。一旦他注销,文本框应该是空的,当点击#signinId输入时,必须显示他的用户名 如果可能的话,应该是这样的: 问题1: 截图2: 非常感谢您的帮助。 提前感谢。当登录表单已用完时,选中复选框,如果已选中,则将登录表单数据(包括用户名和密码)存储在相关cookie中。下次用户访问页面时,您可以读取cookie,如果设置了cooki

我几乎完成了我的项目,但我的登录规范还没有100%完成记住我的功能尚未运行

HTML

我没有在此登录页面中使用表单。 规范是,当登录时选中复选框时,必须重新标记用户。一旦他注销,文本框应该是空的,当点击#signinId输入时,必须显示他的用户名

如果可能的话,应该是这样的:

问题1:

截图2:

非常感谢您的帮助。
提前感谢。

当登录表单已用完时,选中复选框,如果已选中,则将登录表单数据(包括用户名和密码)存储在相关cookie中。下次用户访问页面时,您可以读取cookie,如果设置了cookie,请使用存储的数据填充表单

这把小提琴可以帮助你:

您可以使用以下链接了解如何在jquery中使用Cookie:

下面是一些代码,以进一步解释:

$(document).on(ready,function(){

fillByMemory()
$('button#sign').on('click',function(){

    if($('#rememberChkBox').val()){
        rememberMe();
    }


doLogin();
});



});

function rememberMe(){
         $.cookie('id',$('#signinId').val());
         $.cookie('pass',$('#signinPwd').val());

}

function fillByMemory(){
    if(!!$.cookie('id'))
        $('#signinId').val($.cookie('id'));

    if(!!$.cookie('pass'))
        $('#signinPwd').val($.cookie('pass'));
}

这对我来说非常有效

您需要Jquery.cookie.min.js

    $(function () {

    if (localStorage.chkbox && localStorage.chkbox != '') {
        $('#rememberChkBox').attr('checked', 'checked');
        $('#signinId').val(localStorage.username);
        $('#signinPwd').val(localStorage.pass);
    } else {
        $('#rememberChkBox').removeAttr('checked');
        $('#signinId').val('');
        $('#signinPwd').val('');
    }

    $('#rememberChkBox').click(function () {

        if ($('#rememberChkBox').is(':checked')) {
            // save username and password
            localStorage.username = $('#signinId').val();
            localStorage.pass = $('#signinPwd').val();
            localStorage.chkbox = $('#rememberChkBox').val();
        } else {
            localStorage.username = '';
            localStorage.pass = '';
            localStorage.chkbox = '';
        }
    });
});
自动登录系统

“记住我”实际上不用于在登录表单上显示用户名和密码,因为任何浏览器都已提供此功能。但它的目的是当用户重新访问web时自动登录

要使自动登录系统不在cookie上存储登录凭证,需要添加存储userid和login_字符串的数据库表

在每个用户登录时插入/更新登录字符串

当用户使用RememberMe(按单选按钮)登录时,将登录字符串存储在cookie上

-------------------------------------------------------------------
id (ai)  | userid   | login_string (128 chars) 
--------------------------------------------------------------------
1        |  1       | 86faabe4142269e2274df911a....
--------------------------------------------------------------------
2        |  2       | 013835e194d75c183dc914c9e....
登录字符串必须是唯一的字符串,并且可以通过以下方式创建:

$login_string = hash('sha512', $userid . $_SERVER['HTTP_USER_AGENT'] . time());
结果是一个唯一的128字符串长度

要在cookie上存储登录\u字符串,请执行以下操作:

if(isset(post('remember_me')) {

     $cookie_name  = 'user_str_session';  
     $cookie_value = $login_string;
     setcookie($cookie_name, $cookie_value, time() + (86400 * 1), "/"); // one day example

}
下次用户关闭浏览器并重新访问web时(通常登录会话已过期),在第一次加载页面时,系统将找到登录字符串并返回用户ID。通过使用此用户ID,系统将创建用于自动登录的登录会话

示例脚本:

if(!isset($_SESSION['id'])) {

        if(isset($_COOKIE['user_str_session'])) {
            $user_string = $_COOKIE['user_str_session'] ;

            $sql   = "SELECT `userid` FROM `users_log` WHERE `string` =? ";
            $query = $this->db->query($sql, $user_string);

            $userid = $query->row()->userid;

            if($userid) {                                                 
               $_SESSION['id'] = $userid;                     
            }   
           }
     }
若要阻止公用计算机上的登录\u字符串,请通过删除cookie上的登录\u字符串来应用用户注销

function logout()
   {            
      // remove cookie
      setcookie("user_str_session", "", time() - 3600);

      session_destroy(); 
      redirect('/');    
   }

这只是创建自动登录系统的简要说明。实际上,您可以根据自己的风格和需求进行游戏。

这里只需一个提示。。。您看到的自动填充来自浏览器。你可以看出是浏览器在操作这些输入字段,因为背景颜色发生了变化——在本例中是黄色。如果你在Chrome中保存了密码,它将始终是自动填充的,因为Chrome功能。要忽略要在页面上维护的用户名历史记录,您可以在输入框上使用
autocomplete=“off”
作为属性。我需要这个功能,这就是我需要实现的。但是没有浏览器的功能。哦,你会将密码存储在cookie中,真的吗?如果安全性很重要,你可以将来自服务器的令牌存储在cookie中。将密码存储在cookie中是不安全的。这应该是公认的答案,尽管我将以JavaScript格式实现这一点,但您所建议的原则都是完全合理的,与我之前的想法一致。我来证实我的怀疑。干得好,先生。
if(!isset($_SESSION['id'])) {

        if(isset($_COOKIE['user_str_session'])) {
            $user_string = $_COOKIE['user_str_session'] ;

            $sql   = "SELECT `userid` FROM `users_log` WHERE `string` =? ";
            $query = $this->db->query($sql, $user_string);

            $userid = $query->row()->userid;

            if($userid) {                                                 
               $_SESSION['id'] = $userid;                     
            }   
           }
     }
function logout()
   {            
      // remove cookie
      setcookie("user_str_session", "", time() - 3600);

      session_destroy(); 
      redirect('/');    
   }