最近在写asp课程设计,网站登录注册的功能怎么能少,捣鼓了两天终于弄出点东西来了。
环境:Windows10 + VS2015 + 自带LocalDB
看一下效果:
1、注册页面:
如果用户重名:
2、登录页:
3、注册或者登录好了会跳到Home页面并且显示当前的用户
下面看看关键代码:
①注册前台页面Register.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Register.aspx.cs" Inherits="Album.OnlineAlbum.Register" %>
注册
注册后台页面Register.aspx.cs:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
namespace Album.OnlineAlbum
{
public partial class Register : System.Web.UI.Page
{
private bool UserNameIselgal = false;
private bool PsdIselgal = false;
private bool CanRegister = false;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void linkToLogin_Click(object sender, EventArgs e)
{
Response.Redirect("Login.aspx");
}
protected void btnRegister_Click(object sender, EventArgs e)
{
Session["User"] = rUserNameText.Text;
Session["Psd"] = rPsdText.Text;
string connStr = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True";
SqlConnection conn = new SqlConnection(connStr);
try
{
conn.Open();
SqlCommand cmd = new SqlCommand("select count(*) from UserTable where UId=@UId", conn);
cmd.Parameters.Add("@UId", SqlDbType.Char);
cmd.Parameters[0].Value = Session["User"];
int count = (int)cmd.ExecuteScalar();
if (count > 0)
{
Response.Write("");
}
else
{
CanRegister = true;
}
}
catch
{
Response.Write("检测重名异常");
}
finally
{
conn.Close();
}
if (CanRegister)
{
try
{
conn.Open();
string strIns = "insert into UserTable(UId, Psd) values(@UId, @Psd)";
SqlCommand cmd = new SqlCommand(strIns, conn);
cmd.Parameters.Add("@UId", SqlDbType.NChar);
cmd.Parameters.Add("@Psd", SqlDbType.NChar);
cmd.Parameters["@UId"].Value = Session["User"];
cmd.Parameters["@Psd"].Value = Session["Psd"];
cmd.ExecuteNonQuery();
}
catch
{
Response.Write("注册异常");
}
finally
{
conn.Close();
}
}
CanRegister = CanRegister && UserNameIselgal && PsdIselgal;
if (CanRegister)
{
Session["CurrentUser"] = rUserNameText.Text;
Response.Redirect("Home.aspx");
}
}
protected void CustomValidator1_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
{
if (rUserNameText.Text.Equals("用户名"))
{
CustomValidator1.ErrorMessage = "*用户名为空";
args.IsValid = false;
} else if (System.Text.RegularExpressions.Regex.IsMatch(rUserNameText.Text, "^[0-9a-zA-Z]+$") &&
rUserNameText.Text.Length > 5 && rUserNameText.Text.Length < 11)
{
args.IsValid = true;
UserNameIselgal = true;
}
else
{
CustomValidator1.ErrorMessage = "*用户名由6~10位数字和字母构成";
args.IsValid = false;
}
}
protected void CustomValidator2_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
{
if (rPsdText.Text.Equals("密码"))
{
CustomValidator2.ErrorMessage = "*密码为空";
args.IsValid = false;
}
else if (System.Text.RegularExpressions.Regex.IsMatch(rPsdText.Text, "^[0-9a-zA-Z]+$") &&
rPsdText.Text.Length > 4)
{
args.IsValid = true;
}
else
{
CustomValidator2.ErrorMessage = "*密码由全数字和字母构成且不少于5位";
args.IsValid = false;
}
}
protected void CustomValidator3_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
{
if (rrPsdText.Text.Equals("") ||rrPsdText.Text.Equals("确认密码"))
{
args.IsValid = false;
CustomValidator3.ErrorMessage = "*确认密码为空";
}
else if (!rrPsdText.Text.Equals(rPsdText.Text))
{
args.IsValid = false;
CustomValidator3.ErrorMessage = "*两次密码不一致";
}
else
{
PsdIselgal = true;
args.IsValid = true;
}
}
}
}
②登录前台页面Login.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="Album.OnlineAlbum.Login" %>
登陆
登录后台页面Login.aspx.cs:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Album.OnlineAlbum
{
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
Response.Redirect("Register.aspx");
}
protected void Button1_Click(object sender, EventArgs e)
{
string connStr = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True";
SqlConnection conn = new SqlConnection(connStr);
try
{
conn.Open();
SqlCommand cmd = new SqlCommand("select count(*) from UserTable where UId=@UId and Psd=@Psd", conn);
cmd.Parameters.Add("@UId", SqlDbType.Char);
cmd.Parameters.Add("@Psd", SqlDbType.Char);
cmd.Parameters[0].Value = TextBox1.Text;
cmd.Parameters[1].Value = TextBox2.Text;
int count = (int)cmd.ExecuteScalar();
if (count == 1)
{
Session["CurrentUser"] = TextBox1.Text;
Response.Redirect("./Home.aspx");
}
else
{
Response.Write("");
}
}
catch
{
Response.Write("");
}
finally
{
conn.Close();
}
}
}
}
③Home.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Home.aspx.cs" Inherits="Album.OnlineAlbum.Home" %>
Online Ablum
home.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Album.OnlineAlbum
{
public partial class Home : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["CurrentUser"] != null)
btnToReg.Text = Session["CurrentUser"].ToString();
}
protected void Unnamed1_Click(object sender, EventArgs e)
{
Response.Redirect("Login.aspx");
}
protected void Unnamed2_Click(object sender, EventArgs e)
{
Response.Redirect("Register.aspx");
}
}
}
Web.config:
附上项目代码,需要积分下载。
ps:这是我一个在线相册系统的一部分,完整项目源码见github,可以不用积分下载,不过你得理清我写的东西。