html5登录localstorage几天

时间:2015-01-27 20:49:41

标签: javascript html5

Html5登录localstorage几天。这个HTML5登录脚本使用localstorage来存储用户,一切正常。 但我还需要补充一点。我希望一旦用户第一次登录,该应用程序将用户信息存储在html5中 浏览器30天,30天过后,用户将被重定向回登录状态。有人可以帮助我吗? 感谢。

<script>

$(document).ready(function(){

    $('.send').click(function(){

        var uname=$('#uname').val();
        var pass=$('#pass').val();

        if(uname==""){

            $('.error').effect("bounce",500).fadeIn(400).html('Enter Your Username');

        }

        else if(pass==""){

            $('.error').effect("bounce",500).fadeIn(400).html('Enter your password');

        }

        else{


            $('.error').hide();
            var userdata= "uname="+uname+"&pass="+pass;


            window.localStorage["uname"] = uname;
            window.localStorage["pass"] = pass;

            $("#loader").show();
            $("#loader").fadeIn(400).html('<img src="loader.gif" align="absmiddle">&nbsp;<span class="loading">Checking your details</span>');

            $.ajax({

                type:"post",
                data:userdata,
                url:"http://localhost/login.php",
                cache:false,
                success:function(msg){

                    $("#loader").hide();
                    $('.error').fadeIn(200).html(msg);

                }

            });



        }
    });

});

</script>

3 个答案:

答案 0 :(得分:2)

正如我在评论中提到的(Shomz在他的回答中提到),您需要在存储用户名和密码时在本地存储中设置当前日期(您确定需要将密码存储在本地存储中) - 似乎没有必要),然后检查是否设置了该值并将其与当前日期进行比较。

更新:修复代码(忘记将本地存储日期从字符串转换回日期对象,加上我缺少关闭括号,哎呀!)。

使用示例用法jsfiddle:http://jsfiddle.net/uqpywLv3/17/

<script>

$(document).ready(function(){

    $('.send').click(function(){

        var uname=$('#uname').val();
        var pass=$('#pass').val();

        if(uname==""){
            $('.error').effect("bounce",500).fadeIn(400).html('Enter Your Username');
        }

        else if(pass==""){
            $('.error').effect("bounce",500).fadeIn(400).html('Enter your password');
        }

        else{
            $('.error').hide();
            var userdata= "uname="+uname+"&pass="+pass;

            window.localStorage["uname"] = uname;
            window.localStorage["pass"] = pass;
            // is storing the password this necessary?

            $("#loader").show();
            $("#loader").fadeIn(400).html('<img src="loader.gif" align="absmiddle">&nbsp;<span class="loading">Checking your details</span>');

            $.ajax({
                type:"post",
                data:userdata,
                url:"http://localhost/login.php",
                cache:false,
                success:function(msg){
                    // store the current date
                    window.localStorage["ldate"] = new Date();

                    $("#loader").hide();
                    $('.error').fadeIn(200).html(msg);
                }
            });
        }
    }); // end .send click handler

    // check if the user is logged in
    if (typeof window.localStorage["ldate"] != "undefined") {

        // localstorage seems to store the date as a string
        // so convert it to a date object
        var memDate = new Date(window.localStorage["ldate"]);

        var expDate = new Date(); // current date.
        expDate.setDate(-30); // set to 30 days ago.

        if (memDate > expDate) {
            // user's last login still valid
            // do whatever you think is appropriate here
        } else {
            // user's last login was past 30 days ago
            // perhaps call function to log them out on server side
            // and show login form?
        }
    } else {
        // the user is not logged in.
        // put your code for showing the login form here
    }
});

</script>

答案 1 :(得分:1)

只需设置何时在localStorage中设置数据(通过其中的其他变量),每次加载应用程序时,检查该值并将其与当前日期/时间进行比较。

答案 2 :(得分:0)

1)本地存储数据不会像cookie一样过期。多年来它会像它一样。 2)如果要设置到期日期,请将到期日期作为值添加到localstorage,然后每次检索此信息,并检查您的条件,如天数,小时数或月数。 要么 3)使用cookie,您可以设置到期日期。