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"> <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>
答案 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"> <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,您可以设置到期日期。