您当前的位置:首页 > 文章教程 > 计算机与互联网 > 网络编程

17.7用户注册处理模块

17.7用户注册处理模块

本节编写用户登录验证处理代码。这部分代码的功能是提供用户注册表单,并对获取的注册数据进行验证,确保只有合法用户才能成为新的系统会员。

所谓用户注册界面,是指提供用户注册表单供用户注册为系统新会员。本项目的用户注册界面是由文件Register.aspx实现的,其主要功能是为用户提供信息输入表单,同时将输入数据提交到数据库,并判断该数据是否合法。

文件Register.aspx的主要实现代码如下。

  <asp:ScriptManager ID="sm" runat="server" />
  <asp:UpdatePanel ID="up" runat="server">
    <ContentTemplate>
……
    <td valign="top">用户名称:</td>
    <td width="90%">
    <asp:TextBox ID="tbUsername" runat="server" SkinID="mm" Width="60%" MaxLength="50">
    </asp:TextBox>
    <asp:Button ID="btnCheck" runat="server" Text="用户名检测" CausesValidation="False" OnClick="btnCheck_Click" SkinID="nn" />
    <asp:Label ID="lbCheckResult" runat="server" ForeColor="Red"></asp:Label>
    <asp:RequiredFieldValidator ID="rfNameBlank" runat="server" 
  ControlToValidate="tbUsername" Display="none" ErrorMessage="用户名称不能为空!">
      </asp:RequiredFieldValidator>
      <asp:RequiredFieldValidator 
      Display="none" InitialValue="请输入用户名称" 
      ErrorMessage="用户名称不能为空!">
    </asp:RequiredFieldValidator>
    <asp:RegularExpressionValidator ID="revName" runat="server" 
      ControlToValidate="tbUsername" Display="none" 
      ErrorMessage="用户名称的长度最大为50,请重新输入。" 
      ValidationExpression=".{1,50}">
      </asp:RegularExpressionValidator>
    <ajaxToolkit:TextBoxWatermarkExtender ID="wmeName" runat="server" 
      TargetControlID="tbUsername" WatermarkText="请输入用户名称" 
      WatermarkCssClass="Watermark">
    </ajaxToolkit:TextBoxWatermarkExtender>
    <ajaxToolkit:ValidatorCalloutExtender 
      ID="vceNameBlank" runat="server" 
      TargetControlID="rfNameBlank" HighlightCssClass="Validator">
      </ajaxToolkit:ValidatorCalloutExtender>
    <ajaxToolkit:ValidatorCalloutExtender 
      ID="vceNameValue" runat="server" 
      TargetControlID="rfNameValue" 
      HighlightCssClass="Validator">
    </ajaxToolkit:ValidatorCalloutExtender>
    <ajaxToolkit:ValidatorCalloutExtender 
      ID="vceNameRegex" runat="server" 
      TargetControlID="revName" 
      HighlightCssClass="Validator">
    </ajaxToolkit:ValidatorCalloutExtender>
……
    <td valign="top">用户密码:</td>
    <td width="90%">
    <asp:TextBox ID="tbPassword" runat="server" SkinID="mm" Width="60%" MaxLength="50" TextMode="Password">
    </asp:TextBox><br />
    <asp:Label ID="lbHelp" runat="server"></asp:Label>
    <asp:RequiredFieldValidator ID="rfPwdBlank" runat="server" ControlToValidate="tbPassword" Display="none"
    ErrorMessage="用户密码不能为空!">
    </asp:RequiredFieldValidator>
    <ajaxToolkit:ValidatorCalloutExtender ID="vcePwdBlank" 
      runat="server" TargetControlID="rfPwdBlank" 
      HighlightCssClass="Validator">
    </ajaxToolkit:ValidatorCalloutExtender>
    <ajaxToolkit:PasswordStrength ID="psPassword" 
      runat="server" TargetControlID="tbPassword" 
      DisplayPosition="RightSide" TextCssClass="PasswordStrengthText" 
      HelpHandlePosition="BelowLeft" HelpStatusLabelID="lbHelp" 
      MinimumNumericCharacters="2" MinimumSymbolCharacters="2" 
      PreferredPasswordLength="10" RequiresUpperAndLowerCaseCharacters="true" 
      StrengthIndicatorType="Text" TextStrengthDescriptions="很差;差;一般;好;很好" 
      CalculationWeightings="40;20;20;20">
    </ajaxToolkit:PasswordStrength>
……
      <td valign="top">确认密码:</td>
      <td width="90%">
    <asp:TextBox ID="tbPasswordStr" runat="server" SkinID="mm" Width="60%" MaxLength="50" TextMode="Password">
    </asp:TextBox>
    <asp:CompareValidator ID="cvPwd" runat="server" 
      ControlToValidate="tbPassword" ControlToCompare="tbPasswordStr" 
      Display="none" Operator="Equal" 
      ErrorMessage="两次输入的密码不相同,请重新输入。">
    </asp:CompareValidator>
    <ajaxToolkit:ValidatorCalloutExtender 
      ID="vcePassword" runat="server" TargetControlID="cvPwd" 
      HighlightCssClass="Validator">
    </ajaxToolkit:ValidatorCalloutExtender>
    </td>
    </tr>
    <tr bgcolor="white">            
    <td>验 证 码:</td>
    <td>
    <asp:TextBox ID="tbCode" runat="server" SkinID="mm" Width="80px"></asp:TextBox>
    <asp:Image ID="imgCode" runat="server" ImageUrl = "Yanzhengma.aspx" />

上述代码执行后,将显示注册表单界面,如图17-10所示;如果用户输入非法数据,则将显示相应的提示信息,如图17-11所示。

图片 373

图17-10 注册表单效果

图片 374

图17-11 非法提示效果

注册数据处理是指对注册用户输入的数据进行验证。如果输入的数据非法,则显示对应的提示信息;如果输入的数据合法,则将该数据添加到系统库中。本项目的注册数据处理功能是由文件Register.aspx.cs实现的,其主要实现代码如下。

  protected void Page_Load(object sender, EventArgs e)
  {
  }
  protected void btnCheck_Click(object sender,EventArgs e)
  { ///检查用户名称是否为空
    if(string.IsNullOrEmpty(tbUsername.Text) == true)
    {
     lbCheckResult.Text = "很遗憾,您输入的用户名称为空,不能注册。请重新输入";
     lbCheckResult.ForeColor = System.Drawing.Color.Red;
     return;
    }
    ///检查用户名称是否存在
    UserDAL user = new UserDAL();
    SqlDataReader dr = user.CheckUser(tbUsername.Text);
    if(dr == null)
    { ///如果不存在,则可以使用
      lbCheckResult.Text = "恭喜您,您选择的用户名称可以使用。";
      lbCheckResult.ForeColor = System.Drawing.Color.Green;
      return;
    }
    if(dr.Read())
    { ///如果存在,则不能注册
      if(Int32.Parse(dr["UserCount"].ToString()) > 0)
      {
        lbCheckResult.Text = "很遗憾,您选择的用户名称已经被使用了。请重新选择";
        lbCheckResult.ForeColor = System.Drawing.Color.Red;
      }
      else
      {  ///如果不存在,则可以使用
        lbCheckResult.Text = "恭喜您,您选择的用户名称可以使用。";
        lbCheckResult.ForeColor = System.Drawing.Color.Green;
      }
    }
    else
    { ///如果不存在,则可以使用
      lbCheckResult.Text = "恭喜您,您选择的用户名称可以使用。";
      lbCheckResult.ForeColor = System.Drawing.Color.Green;
    }
    dr.Close();
  }
  protected void btnRegister_Click(object sender,EventArgs e)
  {  ///判断是否创建了验证吗
    if(Session[ValidateCode.VALIDATECODEKEY] == null) return;
    ///验证验证码是否相等
    if(tbCode.Text != Session[ValidateCode.VALIDATECODEKEY].ToString())
    {
      lbMessage.Text = "验证码输入错误,请重新输入。";
      return;
    }
    ///注册新用户
    UserDAL user = new UserDAL();
    if(user.AddUser(tbUsername.Text,tbPassword.Text) > 0)
    {
      lbMessage.Text = "恭喜您,注册成功!";
    }
    else
    {
      lbMessage.Text = "很遗憾,注册失败!";
    }

上述代码的执行结果描述如下:如果输入的用户名没有被使用,则显示对应的提示信息,如图17-12所示;如果输入的用户名已被使用,则显示对应的提示信息,如图17-13所示;如果输入的用户名、密码、确认密码和验证码都正确,则会显示注册成功的提示,如图17-14所示。

图片 375

图17-12 用户名合法提示

图片 376

图17-13 用户名非法提示

图片 377

图17-14 注册成功提示