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