2017-05-03 41 views
0

我已经从网站主(其中登录表单)Cookies - 如何获取上次登录日期时间?

protected void btnLogin_Click(object sender, EventArgs e) 
    { 
     string dt = DateTime.Now.ToString(); 
     Response.Cookies["LastLogin"].Value = dt.ToString(); 
     Response.Cookies["LastLogin"].Expires = DateTime.Now.AddDays(365); 
    } 

所以基本上下面的代码我保存当前日期时间在cookie中,当用户登录英寸

然后在轮廓回顾页面中,我写道:

protected void Page_Load(object sender, EventArgs e) { 
    if (!Page.IsPostBack) 
     { 
      if (Request.Cookies["LastLogin"] != null) 
       { 
        lblMessage.Text = Request.Cookies["LastLogin"].Value; 
       } 
     }} 

的事情是,它的工作原理(它显示的日期和时间),而不是以前的日志中,但对于实际的登录,很明显,但是这就是为什么我问 - 如何解决这个问题没有h想用数据库做任何事情?我怎么能不“覆盖”以前的值,但也保存新的值?

+0

也许我应该创建一个字符串数组,然后当我请求cookie时,请求i-1值?我不知道如果这是可能的,但我是新的cookie代码 – concretejungle

+0

看看我的答案,让我知道它是否适合你?谢谢! – degant

+0

@degant对不起,迟到回复!是的,它的工作,非常感谢 – concretejungle

回答

1

使用一个cookie的LastLogin保存,可以使用应用程序的休息和CurrentLogin保存当前登录的时间戳上次登录信息。

protected void btnLogin_Click(object sender, EventArgs e) 
{ 
    string dt = DateTime.Now.ToString(); 
    if (Response.Cookies["CurrentLogin"] != null) 
    { 
     HttpCookie oldLoginCookie = new HttpCookie("LastLogin") 
     { 
      Expires = Response.Cookies["CurrentLogin"].Expires, 
      Value = Response.Cookies["CurrentLogin"].Value 
     }; 
     Response.SetCookie(oldLoginCookie); 
    } 
    HttpCookie loginCookie = new HttpCookie("CurrentLogin") 
    { 
     Expires = DateTime.Now.AddDays(365), 
     Value = dt.ToString() 
    }; 
    Response.Cookies.Add(loginCookie); 
} 

另外使用的SetCookie()代替Cookies.Add(),以避免从作为建议here添加多个cookie。只要您进行上述更改,您的Page_Load方法应该按原样工作。

0

在进行登录时,您可以将之前的日期(Response.Cookies["LastLogin"].Value,覆盖之前)存储到新的cookie中 - 然后在您的页面加载中检查此新cookie。

您确实需要检查LastLogin是否为空,以防万一这是第一次登录。

事情是这样的:

protected void btnLogin_Click(object sender, EventArgs e) 
{ 
    if(Request.Cookies["LastLogin"] != null) 
    { 
     Request.Cookies["PrevLogin"].Value = Request.Cookies["LastLogin"].Value; 
     Request.Cookies["PrevLogin"].Expires = DateTime.Now.AddDays(365); 
    } 

    string dt = DateTime.Now.ToString(); 
    Response.Cookies["LastLogin"].Value = dt.ToString(); 
    Response.Cookies["LastLogin"].Expires = DateTime.Now.AddDays(365); 
} 
+0

嗯,我在线Request.Cookies [“PrevLogin”]。Value = Request.Cookies [“LastLogin”]。作为异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。 – concretejungle

相关问题