• Webform(六)——登录状态保持(Cookies内置对象)


          用户用浏览器访问一个网站,由于采用的http的特性,Web服务器并不能知道是哪一个用户正在访问,但一些网站,希望能够知道访问者的一些信息,例如是不是第一次访问,访问者上次访问时是否有未做完的工作,这次是否为其继续工作提供方便等等。用浏览器访问一个网站,可以在此网站的网页之间跳转,当从第一个网页转到第二个网页时,第一个网页中建立的所有变量和对象都将不存在。有时希望在这些被访问的网页中建立联系,例如一个网上商店,访问者可能从不同的网页中选取不同的商品,那么用什么办法记录该访问者选取的商品,也就是一般所说的购物筐如何实现。用Cookie对象可以解决以上问题。

    一、cookies

    简单摘要:    

           用户电脑的硬盘上保存的一段文本

           http协议包括浏览器,允许站点在用户电脑上以Cookies的形式来临时保存数据

           如没有设置保存时间,即会话cookies时:

    1、如果你20分钟内没有再次刷新页面,那么此cookies就会自动删除掉

    2、当前访问连接中断,如关闭浏览器,那么cookies会自动删除

            如果设置保存时间,到时间后,cookies会自动删除 

           当然,cookies的保存与否,关键在用户,用户可以手动清楚cookie。

           作用:保持用户的登陆状态

    用法:

    1、获取账号:Response.Cookies["user"].Value = TextBox1.Text;

    2、给该账号设置登录保持的过期时间:Response.Cookies["user"].Expires = DateTime.Now.AddDays(7);

    3、清除cookies:Response.Cookies["user"].Expires = DateTime.Now.AddDays(-5); 只要让数值为负即可,表示已过期几天

     


     

    二、登录状态保持实例

    建立登录Login页面:

    前台代码:

    <form id="form1" runat="server">
        用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
            密码:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
            <asp:CheckBox ID="CheckBox1" runat="server" /><label for="CheckBox1">记住登陆状态7天</label><br />
    
            <asp:Button ID="Button1" runat="server" Text="登陆" />
        </form>

    后台代码:

    protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Click += Button1_Click;
        }
    
        void Button1_Click(object sender, EventArgs e)
        {
            //取值,数据库查询
            bool ok = new UsersDA().Select(TextBox1.Text, TextBox2.Text);
            if (ok)
            {
                //若查到数据,即可以登陆成功
                Response.Cookies["user"].Value = TextBox1.Text;
    
                if (CheckBox1.Checked)
                {
                    //给cookies设置保存时间
                    Response.Cookies["user"].Expires = DateTime.Now.AddDays(7);
                }
                Response.Redirect("Main.aspx");
            }

    主界面Main后台代码:

     //判断,cookies是否为空,不为空,根据cookies传的值查询
            if (Request.Cookies["user"] != null)
            {
                Users u = new UsersDA().Select(Request.Cookies["user"].Value);
    
                Labdl.Text = u.NickName;
                Literal1.Text = ",欢迎你!";
            }
            //为空,跳转登录页面
            else
            {
                Response.Redirect("Login.aspx");
            }


    有登陆就有退出登录:

    Main主界面退出登录前台代码:

    <asp:Button ID="Btntc" runat="server" Text="退出登陆" />

    后台代码(清除cookies):

    void Btntc_Click(object sender, EventArgs e)
        {
            //1清除cookies
            Response.Cookies["user"].Expires = DateTime.Now.AddDays(-5);
            //2刷新页面/跳到登陆页面
            Response.Redirect("Login.aspx");
        }

     

  • 相关阅读:
    Java实验项目六——使用DAO模式实现对职工表的操作
    Java实验项目三——职工类对象数组按照职工生日排序
    Java实验项目三——编程实现Person类,学生类的设计及其继承关系
    Java实验项目三——平面图形和立体图形抽象类
    javax.naming.NoInitialContextException:Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
    对实体 "useSSL" 的引用必须以 ';' 分隔符结尾。
    MATLAB自定义配置
    POJ 2976 Dropping tests(最大化平均值 or 01整数规划)
    POJ3273 Monthly Expense
    POJ3258 River Hopscotch
  • 原文地址:https://www.cnblogs.com/H2921306656/p/5906934.html
Copyright © 2020-2023  润新知