文档章节

用户注册——注册信息保存到数据库

CoderPeng
 CoderPeng
发布于 2015/11/17 11:31
字数 1894
阅读 95
收藏 0

一、所需知识要点

q  ASP.NET的网页代码模型。

q  Web窗体基本控件。

q  数据库基础。

q  ADO.NET常用对象。

q  Web窗体数据控件。

基本了解了以上章节的知识点后,就能够熟练学习和开发此模块。

 

二、首先用户需要访问网站,访问网站后就会选择是否进行注册,如果需要注册则网站提供一个注册模块给用户,用户就能够进行注册。在用户完成注册后,用户信息还应该被管理员管理,管理员能够通过用户管理页面进行页面管理。

q  注册页面:提供用用户注册操作。

 

q  管理页面:提供管理员管理页面。

 

在基本规划了Web应用中需要制作的模块,可以为这些模块进行模块的流程分析。

三、数据库设计

 

表为用户的基本信息创建了字段,这些字段的意义分别为:

q  id:用于标识用户的ID号,并为自动增长的主键。

q  username:用于标识用户名。

q  password:用于标识用户密码。

q  sex:用于标识用户性别。

q  picture:用于标识用户头像。

q  IM:用于标识用户的IM信息,包括QQ/MSN等。

q  information:用于标识用户的个性签名。

q  others:用于标识用户的备注信息。

q  ifisuser:用于标识用户是否为合法用户。

四、根据数据库字段,创建好页面,

    <form id="form1" runat="server"  method="post">
    <div class="top">
    </div>
    <div class="register" style="text-align: center">
        <div>
            <asp:Label ID="Label1" runat="server" Text="用户名">
            </asp:Label><asp:TextBox ID="TextBox1" Width="200px" runat="server"></asp:TextBox></div>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ValidationGroup="validgroup" ControlToValidate="TextBox1"  runat="server" ErrorMessage="用户名不能为空"></asp:RequiredFieldValidator>
        <div>
            <asp:Label ID="Label2" runat="server" Text="密码"></asp:Label>
            <asp:TextBox ID="TextBox2" Width="200px" runat="server" ></asp:TextBox></div>
             <asp:RequiredFieldValidator ID="RequiredFieldValidator2" ValidationGroup="validgroup" ControlToValidate="TextBox2"  runat="server" ErrorMessage="密码不能为空"></asp:RequiredFieldValidator>
        <div>
            <asp:Label ID="Label3" runat="server" Text="性别"></asp:Label>
            <asp:DropDownList ID="DropDownList1" runat="server"  Width="130px">
                <asp:ListItem>0</asp:ListItem>
                <asp:ListItem>1</asp:ListItem>
            </asp:DropDownList>
             <asp:RequiredFieldValidator ID="RequiredFieldValidator3" ValidationGroup="validgroup" ControlToValidate="DropDownList1"  runat="server" ErrorMessage="性别必须选择"></asp:RequiredFieldValidator>
            </div>
        <div>
            <asp:Label ID="Label4" runat="server" Text="头像"></asp:Label>
            <asp:TextBox ID="TextBox3" runat="server" Width="200px"></asp:TextBox></div>
        <div>
            <asp:Label ID="Label5" runat="server" Text="IM"></asp:Label>
            <asp:TextBox ID="TextBox4" runat="server" Width="200px"></asp:TextBox></div>
        <div>
            <asp:Label ID="Label6" runat="server" Text="个性签名"></asp:Label>
            <asp:TextBox ID="TextBox5" runat="server" Width="180px"></asp:TextBox></div>
        <div>
            <asp:Label ID="Label7" runat="server" Text="备注"></asp:Label>
            <asp:TextBox ID="TextBox6" runat="server" Width="200px"></asp:TextBox></div>
        <asp:Label ID="Label8" runat="server" Text="Label" Visible="False"></asp:Label>
       <div> <asp:Button ID="Button1" runat="server" Text="注册" onclick="Button1_Click" /></div>
    </div>
    <div class="end">
        <p>
            版权信息
        </p>
        <p>
            本网站不会将用户信息泄露给任何机构</p>
    </div>
    </form>

 

五、代码实现数据的插入和判断

 

在用户单击按钮控件时会执行数据插入操作,在数据插入之前就需要对信息进行过滤,示例代码如下所示。

 

        protected void Button1_Click(object sender, EventArgs e)

 

        {

 

            if (Check(TextBox1.Text) || Check(TextBox2.Text) || Check(TextBox4.Text) ||

 

            Check(TextBox5.Text) || Check(TextBox6.Text) || Check(TextBox7.Text))                        //判断

 

            {

 

                Label8.Text = "用户信息中不能够包含特殊字符如<,>,',//,\\,请审核";                          //输出信息

 

            }

 

            else

 

            {

 

                //注册代码

 

            }

 

        }

 

上述代码使用了Check函数对文本框控件进行了用户资料的判断,Check函数的实现如下所示。

 

        protected bool Check(string text)                                                                                                                //判断实现

 

        {

 

            if (text.Contains("<") || text.Contains(">") || text.Contains("'") ||

 

              text.Contains("//") || text.Contains("\\"))                                                                                  //检查字串

 

            {

 

                return true;                                                                                                                              //返回真

 

            }

 

            else

 

            {

 

                return false;                                                                                                                            //返回假

 

            }

 

        }

 

Check函数定义了基本的判断方式,如果文本框信息中包含“<”,“>”,“”,“/”,“\”等字符串时,该方法将会返回true,否则会返回false。这也就是说,如果字符串中包含了这些字符,则会返回true。在Button1_Click函数中就会判断包含非法字符,并进行提示,否则会执行注册代码。对关键字的过滤是非常必要的,这样能够保证应用程序的完整性并提高应用程序健壮性,同时也对数据库中的完整性进行了保护。

 

当用户单击按钮控件时,如果对用户进行了非空验证和关键字过滤后,就能够进行数据的插入,用户可以使用ADO.NET进行数据操作,示例代码如下所示。

 

        protected void Button1_Click(object sender, EventArgs e)

 

        {

 

            if (Check(TextBox1.Text) || Check(TextBox2.Text) || Check(TextBox3.Text) ||

 

              Check(TextBox4.Text) || Check(TextBox5.Text) || Check(TextBox6.Text))                    //检查字串

 

            {

 

                Label8.Text = "用户信息中不能够包含特殊字符如<,>,',//,\\,请审核";                          //输出信息

 

            }

 

            else

 

            {

 

                try

 

                {

 

                    SqlConnection con =

 

                    new SqlConnection("server='(local)';database='Register';uid='sa';pwd='sa'");//建立连接

 

                    con.Open();                                                                                                                    //打开连接

 

                    string strsql =

 

                    "insert into register (username,password,sex,picture,im,information,others,ifisuser) values

 

                     ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + DropDownList1.Text + "','" +

 

                    TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "',0)";

 

                    SqlCommand cmd = new SqlCommand(strsql,con);                                           //创建执行

 

                    cmd.ExecuteNonQuery();                                                                                           //执行SQL

 

                    Label8.Text = "注册成功,请牢记您的信息";                                                               //提示成功

 

                }

 

                catch

 

                {

 

                    Label8.Text = "出现错误信息,请返回给管理员";                                                       //抛出异常

 

                }

 

            }

 

        }

 

上述代码通过ADO.NET实现了数据的插入,但是上述代码有一个缺点,如果用户注册了一个用户并且名称为abc,当这个用户注销并再注册一个用户名称为abc时,如果依旧将数据插入到数据库则会出现错误。值得注意的是,这个错误并不是逻辑错误,但是这个错误会造成不同的用户可能登录了同一个用户信息并产生信息错误。为了避免这种情况的发生,在用户注册前首先需要执行判断,示例代码如下所示。

 

        string check = "select * from register where username='" + TextBox1.Text + "'";

 

        SqlDataAdapter da = new SqlDataAdapter(check,con);                                                     //创建适配器

 

        DataSet ds = new DataSet();                                                                                                     //创建数据集

 

        da.Fill(ds, "table");                                                                                                                       //填充数据集

 

        if (da.Fill(ds, "table") > 0)                                                                                                            //判断同名

 

        {

 

            Label8.Text = "注册失败,有相同用户名";                                                                          //输出信息

 

        }

 

        else

 

        {

 

            SqlCommand cmd = new SqlCommand(strsql, con);                                                 //创建执行对象

 

            cmd.ExecuteNonQuery();                                                                                                  //执行SQL

 

            Label8.Text = "注册成功,请牢记您的信息";                                                                      //输出成功

 

        }

 

在用户注册时,首先从数据库查询出是否已经包含这个用户名的信息,如果包含则不允许用户注册,如果没有,则说明用户是一个新用户,可以进行注册。

本人也是菜鸟一个~~一起努力!请各位老大指教!!谢谢!!

 附带一下代码:default.aspx.cs

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 登录注册
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                Label8.Visible = true;
            }

        }

        protected bool Check(string text)                                                                                                                //判断实现
        {

            if (text.Contains("<") || text.Contains(">") || text.Contains("'") ||

              text.Contains("//") || text.Contains("\\"))                                                                                  //检查字串
            {

                return true;                                                                                                                              //返回真

            }

            else
            {

                return false;                                                                                                                            //返回假

            }

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (Check(TextBox1.Text) || Check(TextBox2.Text) || Check(TextBox3.Text) ||

           Check(TextBox4.Text) || Check(TextBox5.Text) || Check(TextBox6.Text))                   //判断
            {
                Label8.Visible = true;

                Label8.Text = "用户信息中不能够包含特殊字符如<,>,',//,\\等,请审核";               //输出信息

            }

            else
            {
                try
                {
                    SqlConnection con =

                    new SqlConnection("Data Source=.;Initial Catalog=Register;Integrated Security=True");//建立连接

                    con.Open();

                    string check = "select * from register where username='" + TextBox1.Text + "'";

                    SqlDataAdapter da = new SqlDataAdapter(check, con);                                                     //创建适配器

                    DataSet ds = new DataSet();                                                                                                     //创建数据集

                    da.Fill(ds, "table");                                                                                                                       //填充数据集

                    if (da.Fill(ds, "table") > 0)                                                                                                            //判断同名
                    {

                        Label8.Text = "注册失败,有相同用户名";                                                                          //输出信息

                    }


                    else
                    {
                        string strsql =

                          @"insert into register (username,password,sex,picture,im,information,others,ifisuser) values

                     ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + DropDownList1.Text + "','" +

                        TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "',0)";


                        SqlCommand cmd = new SqlCommand(strsql, con);                                           //创建执行

                        cmd.ExecuteNonQuery();                                                                                           //执行SQL

                        Label8.Text = "注册成功,请牢记您的信息";   //提示成功
                    }                                             

                }


                catch
                {

                    Label8.Text = "出现错误信息,请返回给管理员";     //抛出异常
                }



            }

        }
    }
}

 

 

 

 

 

© 著作权归作者所有

CoderPeng
粉丝 0
博文 140
码字总数 78649
作品 0
青浦
程序员
私信 提问
摇钱树计费软件如何切换access与sql数据库

摇钱树计费软件如何切换access与sql数据库 使用摇钱树计费软件三个多月了,一直很稳定,刚开始用的是access数据库,后来想用SQL数据库,不知道如何操作,后来咨询摇钱树24小时即时在线服务,...

a764317194
2011/07/11
148
0
网站用户身份标识的识别

用户分析是网站分析中一个重要的组成部分,在分析用户之前我们必须首先能够识别每个用户,分辨哪些是”New Customer”,哪些是”Repeat Customer”。这样不但能够更加清晰地了解到底有多少用...

小木头的冬天
2016/09/08
67
0
beego开发轻博客——第四讲 用户登陆和注册

【小鸡软件】beego开发轻博客 本章目标:添加用户登陆及注册功能! github: 打开后,点击右上角star按钮 码云: 打开后,点击右上角star按钮 初始化数据-数据库选用sqlite3数据库 安装 gorm框...

qq归位
2018/08/01
0
0
Dubbo设计分享——实现的健壮性

Dubbo作为远程服务暴露、调用和治理的解决方案,是应用运转的经络,其本身实现健壮性的重要程度是不言而喻的。 这里列出一些Dubbo用到的原则和方法。 一、日志 日志是发现问题、查看问题一个...

candies
2014/02/22
369
0
【免费】捷微微信管家公众号运营培训开课啦!

捷微微信管家公众号运营培训开课啦!平台账号免费注册,基本配置、微信营销、微网站、微商城和会员卡等功能一律免费使用。快来体验吧(jeewx.com/jeewx)。每周一期,敬请连续关注。 报名地址...

Jeecg
2015/09/06
102
0

没有更多内容

加载失败,请刷新页面

加载更多

安全组和云防火墙的区别

前言 熟悉云平台的朋友可能都会注意到这样一个事情:无论公有云还是私有云,创建虚拟机的时候都需要选择安全组,来对虚拟机进行安全防护;有的云平台在VPC里,还能选择防火墙,ZStack在3.6版...

ZStack社区版
20分钟前
1
0
教育性app开发的重要性和好处

在这个精通技术的世界中,流行的app主导着无聊的教育系统。当我们将技术和教育结合在一起时,它将带来当代以及强大的学习资源。因此,将教育移动app集成到您的学习过程中,并根据自己的信念把...

a429011717
21分钟前
2
0
IE6/7/8如何兼容CSS3属性

本文转载于:专业的前端网站➩IE6/7/8如何兼容CSS3属性 最近在工作中总是要求IE8兼容CSS3属性,在网上搜了搜主要是引入了一个htc文件(ie-css3.htc或者PIE.htc。个人认为这两个文件的作用差不...

前端老手
36分钟前
2
0
手把手教你ALLEGRO的约束规则的设置教程!

约束规则的设置 分三步, 定义规则(一、基本约束规则设置:1、线间距设置;2、线宽设置;3、设置过孔;4、区域约束规则设置;5、设置阻抗;6、设置走线的长度范围;7、设置等长:7.1、不过电阻的NET 等...

demyar
38分钟前
3
0
完美解决H5滚动滑动穿透方案:不使用系统滚动

网上有很多黑科技解决这个问题,都不是从根本去解决,例如通过js控制弹出时html加上position:fixed; 弹窗关闭后再去掉该样式,总觉得不太对,像是打补丁。 今天终于找到了滚动穿透的原因和完...

未来cc
42分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部