在网页中进行注册的时候,要经过两次校验,一次是根据用户填入的信息在注册界面直接给予信息提示,也就是前端的表单校验,除此之外再用户填写完信息后还要在服务端再次进行校验。只有经过两次校验,才能确保用户数据的正确,防止产生安全隐患。
前端的校验:
用户界面输入,给与友好提示,表达用户在输入数据时输入正确,但不会因此而决定服务端的数据的插入。
//1.引用JS文件(以验证邮箱为例)
<script src="../js/jquery-1.7.1.js"></script>
//2.当文本框失去焦点的时候,直接调用 validateEmail方法
$(function () {
$("#userMail").blur(function () {
validateEmail();
});
$("#validataCode").blur(function () {
validateCode();
});
$("#btnRegister").click(function () {
validateEmail();
validateCode();
//表单序列化生成一个Jason文件
var par = $("#").serializeArray();
});
});
//3.用正则表达式判断输入的信息格式是否正确,封装了validateEmail方法
function validateEmail() {
var val = $(this).val();
//数据是否存在
if (val != "") {
//正则表达式格式的写法:
var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
//输入的数值正确;
if (reg.test(val)) {
$("#msg").css("display", "none");
//用Action方法:可以判断多个类型的数据
$.post("/ashx/validateReg.ashx", { "action": "mail", "usermail": val }, function (data) {
$("#msg").css("display", "block");
$("#msg").text(data);
})
}
else {
$("#msg").text("邮箱格式错误");
}
} else {
$("#msg").text("邮箱名不能为空");
}
};
//4.一般处理程序的方法:(以判断邮箱为例)
//以Action值为mail,调用 CheckUserMail的封装方法;
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string action = context.Request["action"];
if (action=="mail")
{
CheckUserMail(context);
}
else if (action=="code")
{
string validateCode = context.Request["validateCode"];
if (WebCommon.CheckValidateCode(validateCode))
{
context.Response.Write("验证码正确");
}
else
{
context.Response.Write("验证码错误");
}
}
}
//5.完成校验,(用户邮箱)
private void CheckUserMail(HttpContext context)
{
string userMail = context.Request["userMail"];
if (userManager.CheckUserMail(userMail))
{
context.Response.Write("邮箱已经存在");
}
else
{
context.Response.Write("邮箱可以注册");
}
}
服务端校验:
//1.触发btn事件,判断数据是否存在
$("#btnRegister").click(function () {
validateEmail();
validateCode();
//表单序列化生成一个Jason文件
var par = $("#").serializeArray();
});
//2.在服务端校验,在aspx.cs文件中写进方法:
//判断用户数据数据是否正确;
protected void Page_Load(object sender, EventArgs e)
{
//是否为首次登录;
if (IsPostBack)
{
if (WebCommon.CheckValidateCode(Request["txtCode"]))
{
//调用AddUserInfo的方法;
AddUserInfo();
}
}
}
//3.若数据正确,将数据插入表中
private void AddUserInfo()
{
Model.User userInfo = new Model.User()
{
//获取前段数给实体;
Address = Request["txtAddress"],
LoginId = Request["txtName"],
LoginPwd = Request["txtPwd"],
Mail = Request["txtEmail"],
Name = Request["txtRealName"],
Phone = Request["txtPhone"]
};
userInfo.UserState.Id = Convert.ToInt32(UserStateEnum.NormalState);
UserManager userManager = new UserManager();
string msg = string.Empty;
if (userManager.Add(userInfo,out msg)>0)
{
//进行页面跳转;
Session["userinfo"] = userInfo;
Response.Redirect("/Default.aspx");
}
else
{
//跳转至错误页,注册信息发生错误;
Response.Redirect("/ShowMsg.aspx?msg=" + msg+"&txt=首页"+"&url=/Default.aspx");
}
}