由于工作需要,对方要求me做个模块或者其他实体东西,于是就选择了大家经常用到的用户注册模块,废话不多说先看效果图,没有经过任何美工处理,效果一般,效果图:

在设计注册模块之前需要先知道此模块的工作流程,即各个控件的用途,比如使用验证控件,电话号码的验证需要正则表达式,邮箱也是,主要还是控件与SQL的交互。

html代码:

<head runat="server">    <title>新用户注册</title>    <style type="text/css">        .style1 {            text-align: center;            width: 870px;            margin-left: 47px;        }        .style2        {            font-size: 8pt;        }        .style3        {            font-size: 5pt;        }        </style></head><body>    <form id="form1" runat="server" action="index.aspx">    <div class="style1">

        用户注册        <hr style="width:50%; color:blue"/>         <table align="center">        <tr><td>        会员姓名:<asp:TextBox ID="txtName" runat="server"              ToolTip="字母、下划线、数字"                 ontextchanged="txtName_TextChanged"></asp:TextBox>             </td>             <td>        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"             ControlToValidate="txtName" Display="Dynamic" ErrorMessage="会员姓名不能为空"></asp:RequiredFieldValidator>

            </td>            <td> <asp:Label ID="lblMZ" runat="server"></asp:Label></td>               <td><asp:Label ID="lblZC" runat="server"></asp:Label></td>            </tr>             <tr>             <td>                密码:&nbsp;&nbsp;&nbsp;&nbsp;         <asp:TextBox ID="txtPwd" runat="server" TextMode="Password"></asp:TextBox>              </td>        <td>        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"             ControlToValidate="txtPwd" Display="Dynamic" ErrorMessage="密码不能为空,建议大于6位数"></asp:RequiredFieldValidator>            </td>            </tr>       <tr>       <td>        确认密码:<asp:TextBox ID="txtPwdOk" runat="server" TextMode="Password"></asp:TextBox>                 </td>        <td>        <asp:CompareValidator ID="CompareValidator1" runat="server"             ControlToCompare="txtPwd" ControlToValidate="txtPwdOk" Display="Dynamic"             ErrorMessage="密码不相同,请重新输入"></asp:CompareValidator>            </td>            </tr>        <tr>        <td>                昵称:&nbsp;&nbsp;&nbsp;&nbsp;         <asp:TextBox ID="txtNick" runat="server"></asp:TextBox>                 </td>

       </tr>       <tr>        <td>                性别:&nbsp;<asp:RadioButton ID="rdiobtnM" runat="server" GroupName="sex"                     Text="男" />                &nbsp;&nbsp;                <asp:RadioButton ID="rdobtnW" runat="server" GroupName="sex" Text="女" />        </td>        </tr>        <tr>         <td>                电话:&nbsp;&nbsp;&nbsp;         <asp:TextBox ID="txtPhone" runat="server"></asp:TextBox>

        </td>        <td>            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"                 ControlToValidate="txtPhone" Display="Dynamic" ErrorMessage="请正确输入手机或固话"                 ValidationExpression="\d{11}|(\d{3,4}-)?\d{7,8}"></asp:RegularExpressionValidator>                    </td>        </tr>        <tr>         <td>                邮箱:&nbsp;&nbsp;&nbsp;         <asp:TextBox ID="txtMail" runat="server"></asp:TextBox>                </td>        <td>            <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server"                 ControlToValidate="txtMail" ErrorMessage="请正确输入邮箱地址"                 ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>                    </td>        </tr>        <tr>         <td>        所在城市:<asp:TextBox ID="txtCity" runat="server"             ></asp:TextBox>            </td>        </tr>        <tr>        <td style="font-size: 5pt">            <asp:Button ID="btnZhuCe" runat="server" Text="注册" οnclick="btnZhuCe_Click" />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        <asp:Button ID="btnQuXiao" runat="server" Text="取消" οnclick="btnQuXiao_Click" />        </td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

        <td>            &nbsp;</td>        </tr>        <tr><td><span class="style2"><a href="index.aspx">所有已注册用户</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>            <span class="style3"><a href="changeinfo.aspx" style="font-size: 8pt">修改个人信息</a></span></td></tr>        </table>        </div>    </form></body></html>

在用户注册页面需要判断用户输入的是否为空,还要判断用户时候已经注册过,用户的输入的用户名格式是否合法。该功能用TextChanged来实现,调用isnamefomrmar方法判断用户输入的用户名是否正确,最后调用isname方法判断用户名是否已经存在,并给出相应的提示,实现的代码如下:

 protected void txtName_TextChanged(object sender, EventArgs e)        {//判断用户名是否为空if (txtName.Text == " ")            {//给出提示信息                ClientScript.RegisterStartupScript(this.GetType(), " ", "<script>alert('用户名不能为空!')</script>");            }else            {//判断用户名是否符合正则表达式if (isNameFormar())                {//判断用户是否已注册if (isName())                    {                        lblZC.Text = " ";                    }else                    {                        lblZC.Text = "用户可以注册";                    }                }else                {//用户名不符合正则表达式,则把清空                    txtName.Text = " ";                }

            }

自定义方法isnameformar用来判断用户输入的格式是否正确,会员输入的格式是指用户名只能包含数字,字母及下划线,主要通过regex的ismatch方法实现,看是否满足正则表达式,然后返回布尔值,实现的代码如下:

 protected bool isNameFormar()        {//定义个布尔型的变量,初始为falsebool blNameFormar = false;//设置正则表达式            Regex re = new Regex("^[a-zA-Z0-9_]{3,16}$");//用IsMatch方法判断用户输入信息是否合法if (re.IsMatch(txtName.Text))            {//设置布尔值为true                blNameFormar = true;this.lblMZ.ForeColor = System.Drawing.Color.Black;            }else            {//设置布尔值为false                blNameFormar = false;                lblMZ.Text = "用户格式不正确";                ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('用户名格式不正确!')</script>");                lblMZ.ForeColor = System.Drawing.Color.Red;            }//返回布尔值return blNameFormar;        }

自定义方法isname来判断用户输入的用户名是否已经存在,可通过SQL语句实现,如果已存在返回布尔值true,否则返回false,实现代码如下:

protected bool isName()        {//定义个布尔型的变量,初始为falsebool blisname = false;//定义SQL语句,实现查询功能string sqlSel = "select count(*) from userInfo where userName='" + txtName.Text + "'";//创建数据库连接            SqlConnection con = new SqlConnection("server=.;database=login;uid=sa;pwd=szl;");//创建SqlCommand对象com            SqlCommand com = new SqlCommand(sqlSel, con);//打开数据库连接            con.Open();//判断查询结果中第一行的第一列是否存在if (Convert.ToInt32(com.ExecuteScalar()) > 0)            {//存在,返回为true                blisname = true ;            }else            {//不存在,返回为false                blisname =false ;            }//关闭数据库连接            con.Close();//返回布尔值return blisname;        }

在“注册”按钮单击事件中,先判断用户名是否已经存在,和格式是否正确,在满足这两个条件的基础上,在把用户的信息添加到数据库中,主要通过insert语句实现,为了提高保密性,我们对密码进行了加密,使用MD5加密方式,代码实现如下:

protected void btnZhuCe_Click(object sender, EventArgs e)        {//调用isNameFormar自定义方法判断用户名输入的是否满足要求if (isNameFormar())            {//调用自定义isName方法判断用户名是否已存在if (isName())                {//用lable控件显示提示信息                    lblMZ.Text = "用户已存在";                    lblMZ.ForeColor = System.Drawing.Color.Red;//设置字体演示

                }else                {

//获取用户填写的会员名string userName = txtName.Text;//获取用户填写的密码并进行加密string userPass = FormsAuthentication.HashPasswordForStoringInConfigFile(txtPwd.Text, "MD5");//获取用户填写的昵称名称string nickName = txtNick.Text;//获取用户性别string sex = "";if (rdiobtnM.Text=="男")                    {                        sex = "男";                    }else                    {                        sex = "女";                    }//获取用户电话string phone = txtPhone.Text;//获取用户输入城市名string city = txtCity.Text;//获取用户输入的e_mailstring email = txtMail.Text;//定义一个SQL语句,实现用户信息的添加string sqlIns = "insert into userInfo(userName,userPass,nickName,sex,phone,email,city) values ('" + userName + "','" + userPass + "','" + nickName + "','" + sex + "','" + phone + "','" + email + "','" + city + "')";//创建数据库连接                    SqlConnection con = new SqlConnection("server=.;database=login;uid=sa;pwd=szl;");//打开数据库连接                    con.Open();//定义命令对象                    SqlCommand com = new SqlCommand(sqlIns, con);//判断受影响的行数,大于0,证明添加成功,反之不成功if (com.ExecuteNonQuery()>0)                    {                        ClientScript.RegisterStartupScript(this.GetType(),"", "<script>alert('注册成功!')</script>");//清空文本框中的信息                        txtName.Text = txtNick.Text = txtPhone.Text = txtMail.Text = txtCity.Text = "";                        lblMZ.Text = "";                        Response.Redirect("");                    }else                    {                        ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('请正确填写信息!')</script>");                    }                    con.Close();                }            }else            {                ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('请正确填写信息!')</script>");            }        }

主要还是对整个流程的把握,注意!

转载于:https://www.cnblogs.com/shenzhoulong/archive/2010/06/19/1761038.html

用户注册模块详解(30)相关推荐

  1. python的sys模块有什么用_python sys模块详解

    Python sys 模块详解 1. 简介 "sys"即"system","系统"之意.该模块提供了一些接口,用于访问 Python 解释器 ...

  2. [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  3. python的threading库_python标准库介绍——31 threading 模块详解

    threading 模块 (可选) ``threading`` 模块为线程提供了一个高级接口, 如 [Example 3-1 #eg-3-1] 所示. 它源自 Java 的线程实现. 和低级的 ``t ...

  4. Python基础学习之 os 模块详解

    Python基础学习之 os 模块详解 文章目录 Python基础学习之 os 模块详解 1. 路径操作 1.1 os.chdir(),切换当前工作目录: 1.2 os.getcwd(),返回工作目录 ...

  5. Pygame最常用的模块详解

    Pygame最常用的模块详解 参考:pygame详细教程 参考案例:游戏模块 1. Color类 class pygame.Color Pygame 中用于描述颜色的对象. Color(name) - ...

  6. python当中时间模块详解,包括time,timeit,datatime

    目录 time 模块 -- 时间获取和转换 以下三个比较常见: time.perf_counter() time.process_time() time.sleep(secs) timeit 模块详解 ...

  7. python bisect_Python实现二分查找与bisect模块详解

    前言 其实Python 的列表(list)内部实现是一个数组,也就是一个线性表.在列表中查找元素可以使用 list.index()方法,其时间复杂度为O(n) .对于大数据量,则可以用二分查找进行优化 ...

  8. Python 标准库之 sys 模块详解

    Python sys 模块详解 1. 简介 "sys"即"system","系统"之意.该模块提供了一些接口,用于访问 Python 解释器 ...

  9. 【ES6】Module模块详解

    [ES6]Module模块详解 一.Module的由来 二.严格模式 三.export命令 四.import命令 查看更多ES6教学文章: 参考文献 引言:由于两个JS文件之间相互使用必须通过一个ht ...

最新文章

  1. python批量重命名指定目录下所有文件的后缀名
  2. vue上传图片组件(支持拖拽文件夹上传)
  3. pythontcp_TCP编程
  4. 关于Jakarta EE与MicroProfile的创新和关系的提案
  5. WinJS实用开发技巧(5):学习资料推荐
  6. 网络爬虫抓包使用及通过表单请求
  7. vue data 值如何渲染_vue源码阅读复盘-watcher模块
  8. 【JAVA】java代码实现print2Flash转swf文件,百度文库一样。
  9. 陪孩子的周日-20220123
  10. UninstallPKG 1.1.9 Mac卸载工具
  11. python打印文档添加条码_使用Python在Excel中批量生成条形码
  12. js 格式化prettier配置_使用Prettier eslint pre-commit进行js代码自动检测,格式化统一风格...
  13. 开源网络模拟器资源统计列表
  14. 由AFX_IDW_PANE_FIRST宏的含义分析界面库XTP的一个bug
  15. jr某头条新闻爬虫(超详细)
  16. 开发移动应用的7个致命错误
  17. 计算机word除法公式,word怎么用函数计算除法
  18. 达内2016前端开发知识点总结--ajax php mysql--9天
  19. C#开发笔记之02-什么时候使用OnXXX方法,这种命名是什么意思?
  20. Calling brew cask install is disabled! Use brew install [--cask] instead

热门文章

  1. 安利一下这个群投票的小程序,比较好用
  2. 基于长度特征的三文鱼好sea bass的区分,sesbass 比三文鱼长
  3. 子线程适当Sleep的重要性
  4. solaris查看主机信息
  5. 使用百度地图实现详细地址自动补全
  6. 【Android开发学习笔记之一】5大布局方式详解
  7. Tomcat启动脚本startup.sh分析
  8. iOS 之 内存管理
  9. 解决linux下内网域名的ping结果和nslookup结果不一致
  10. java new java.text.SimpleDateFormat(yyyyMM01).format(date)