利用Cookies(或Session)制作登录页面!

Login.aspx为登录页面。代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
namespace WebApplication12
{
    public partial class Login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //两个方法的参数add(ListItem item),
                //ListItem(string text,string value)
                DropDownList1.Items.Add(new ListItem("不保存", "0"));
                DropDownList1.Items.Add(new ListItem("保存1天", "1"));
                DropDownList1.Items.Add(new ListItem("保存1周", "7"));
                DropDownList1.Items.Add(new ListItem("保存1月", "30"));
                DropDownList1.Items.Add(new ListItem("保存1年", "365"));
                DropDownList1.Items[0].Selected = true;
            }
        }
        //登录按钮
        protected void Button1_Click(object sender, EventArgs e)
        {
            string username = TextBox1.Text.Trim();
            string password = TextBox2.Text.Trim();
            //得到下拉框的string value参数
            string interval = DropDownList1.SelectedValue;
            SqlConnection con = new SqlConnection();
            con.ConnectionString = @"server=.;database=Exercise;Trusted_Connection=SSPI;";
            string sql = "select userid,pwd from login where userid= '" + username + "'";
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            //在这里要注意一下,ASP.NET里的DataSet需要加命名空间
            //using system.data;而不像WINFORM里那样数据集是在sqlclient里包含的
            DataSet ds = new DataSet();
            da.Fill(ds);
            if (ds.Tables[0].Rows.Count == 0)
            {
                //用户名不存在
                Response.Write("<script language='javascript'>alert('用户名不存在');history.back();</script>");
                Response.End();
                //alert为警告框,historyback()为返回上一页记录。
            }
            else
            {   //在表中找出查询到的密码与文本框里值对比
                string passwd = ds.Tables[0].Rows[0]["pwd"].ToString();
                if (password == passwd)
                {
                    Response.Cookies["用户名"].Value = username;
                    //如果用户选择了不保存则不定义有效期,否则将定义COOKIE有效期
                    if (Convert.ToInt32(interval) > 0)
                    {
                        Response.Cookies["用户名"].Expires = DateTime.Now.AddDays(Convert.ToInt32(interval));

                    }
                    //处理完毕后重新定向到其他可访问的页面,这里是success.aspx
                    Response.Redirect("success.aspx");
                }
                else
                {
                    //密码错误
                    Response.Write("<script language='javascript'>alert('密码错误');history.back();</script>");
                    Response.End();
                        
                }
            }
        
            

        }
        
    }
}


该页面效果图如下:

 

下面添加success.aspx页面。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication12
{
    public partial class success : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string username = string.Empty;
            //获得请求页面的Cookie
            if (Request.Cookies["用户名"] == null)
            {
                username = "";
            }
            else
            {
                username = Request.Cookies["用户名"].Value;
            }
            if (username == "")
            {   //location.href='Login.aspx';为JS跳转语句
                Response.Write("<script language='javascript'>alert('您没有登陆,不可以查看此页!');location.href='Login.aspx';</script>");
                Response.End();
            }
            Label1.Text = username;
        }
        //退出。设置COOKIE无效
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Cookies["用户名"].Expires = DateTime.Now.AddDays(-1);
        }
    }
}


效果图如下:

 

如果用Session,则不需要定义保存期,也不需要Login.aspx页面的if (Convert.ToInt32(interval) > 0)分支,因为Session有效期默认20分钟,不需要设置interval,其他代码处只需要将Cookies换为Session即可。并且,退出按钮里的代码应该换为Session.Abandon()来释放Sesion

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值