ایجاد فرم ثبت نام کاربر در Asp.Net

دوشنبه 30 شهریور 1394

این مثال در واقع در مورد چگونگی ثبت نام یک کاربر در وب سایت توضیح خواهد داد، کاربر می تواند فرم ثبت نام را با اطلاعاتی مثل نام کاربری ، رمز عبور، آدرس الکترونیکی و... پر کند و این اطلاعات داخل جدولی در دیتابیس ذخیره خواهد شد این فرم ثبت نام به گونه ای است که نام کاربری و آدرس الکترونیکی تکراری ذخیره نمی شود

ایجاد فرم ثبت نام کاربر در Asp.Net

در این مقاله ابتدا یک پایگاه داده می سازیم که یک جدول با اطلاعات زیر داشته باشد:

در جدول بالا ستون UserId کلید اصلی است و در قسمت تنظیمات این ستون گزینه ی Identity property

باید True باشد.

در قسمت Design UI به چند Text Box تعیین اعتبار مربوط به خود را دارد و یک دکمه نیاز است.

برای اعتبار درست بودن هر Text Box از  Validatorمربوط به خودش استفاده می کنیم.

   <form id="form1" runat="server">
     <h3><a href="http://barnamenevisan.org/">مرجع تخصصی برنامه نویسان</a></h3>   
<table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <th colspan="3">
         فرم ثبت نام
        </th>
    </tr>
    <tr>
        <td>
            نام کاربری:
        </td>
        <td>
            <asp:TextBox ID="txtUsername" runat="server" />
        </td>
        <td>
            <asp:RequiredFieldValidator ErrorMessage="لطفا نام کاربری را وارد نمایید" ForeColor="Red" ControlToValidate="txtUsername"
                runat="server" />
        </td>
    </tr>
    <tr>
        <td>
            کلمه عبور:
        </td>
        <td>
            <asp:TextBox ID="txtPassword" runat="server" TextMode="Password" />
        </td>
        <td>
            <asp:RequiredFieldValidator ErrorMessage="لطفا کلمه عبور را وارد نمایید" ForeColor="Red" ControlToValidate="txtPassword"
                runat="server" />
        </td>
    </tr>
    <tr>
        <td>
            تکرار کلمه عبور:
        </td>
        <td>
            <asp:TextBox ID="txtConfirmPassword" runat="server" TextMode="Password" />
        </td>
        <td>
            <asp:CompareValidator ErrorMessage="کلمه عبور مطابقت ندارد" ForeColor="Red" ControlToCompare="txtPassword"
                ControlToValidate="txtConfirmPassword" runat="server" />
        </td>
    </tr>
    <tr>
        <td>
           آدرس الکترونیکی:
        </td>
        <td>
            <asp:TextBox ID="txtEmail" runat="server" />
        </td>
        <td>
            <asp:RequiredFieldValidator ErrorMessage="لطفا ایمیل را وارد نمایید" Display="Dynamic" ForeColor="Red"
                ControlToValidate="txtEmail" runat="server" />
            <asp:RegularExpressionValidator runat="server" Display="Dynamic" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
                ControlToValidate="txtEmail" ForeColor="Red" ErrorMessage="آدرس الکترونیکی معتبر نیست" />
        </td>
    </tr>
    <tr>
        <td>
        </td>
        <td>
            <asp:Button Text="ثبت نام" runat="server" OnClick="RegisterUser" />
        </td>
        <td>
        </td>
    </tr>
</table>

    </form>

حال به یک stored procedure نیاز داریم برای اضافه کردن نام کاربری و آدرس الکترونیکی ، که نام کاربری

و آدرس الکترونیکی و ... را به جدول اضافه می کند.

این stored procedure اول چک می کند اگر نام کاربری موجود بود مقدار -1 را بر می گرداند ، اگر رمز عبور موجود بود مقدار -2 را بر می گرداند، اگر هر دو موجود باشد هم نام کاربری و هم آدرس الکترونیکی

سپس یک رکورد به طور خودکار با یک UserId ذخیره می شود.


CREATE PROCEDURE [dbo].[Insert_User]
      @Username NVARCHAR(20),
      @Password NVARCHAR(20),
      @Email NVARCHAR(30)
AS
BEGIN
      SET NOCOUNT ON;
      IF EXISTS(SELECT UserId FROM Users WHERE Username = @Username)
      BEGIN
            SELECT -1 -- Username exists.
      END
      ELSE IF EXISTS(SELECT UserId FROM Users WHERE Email = @Email)
      BEGIN
            SELECT -2 -- Email exists.
      END
      ELSE
      BEGIN
            INSERT INTO [Users]
                     ([Username]
                     ,[Password]
                     ,[Email]
                     ,[CreatedDate])
            VALUES
                     (@Username
                     ,@Password
                     ,@Email
                     ,GETDATE())
           
            SELECT SCOPE_IDENTITY() -- UserId                 
     END
END

داخل Web Config قطعه کد زیر را می نویسید:


using System.Data;
using System.Configuration;
using System.Data.SqlClient;

داخل رویداد دکمه چک می کند اگر دکمه را زدیم ، مقدار Text Box ها به سمت stored procedure فرستاده می شود و stored procedure اجرا می شود.

مقدار ها داخل جدول پایگاه داده ما ذخیره می شود و یک پیغام با JavaScript Alert message box

(با کد های Javascript ) به کاربر داده می شود که این پیغام عدم موفقیت و یا موفقیت را نمایش می دهد.


 
 int userId = 0;
            string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {
                using (SqlCommand cmd = new SqlCommand("Insert_User"))
                {
                    using (SqlDataAdapter sda = new SqlDataAdapter())
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.AddWithValue("@Username", txtUsername.Text.Trim());
                        cmd.Parameters.AddWithValue("@Password", txtPassword.Text.Trim());
                        cmd.Parameters.AddWithValue("@Email", txtEmail.Text.Trim());
                        cmd.Connection = con;
                        con.Open();
                        userId = Convert.ToInt32(cmd.ExecuteScalar());
                        con.Close();
                    }
                }
                string message = string.Empty;
                switch (userId)
                {
                    case -1:
                        message = "نام کاربری موجود می باشد";
                        break;
                    case -2:
                        message = "آدرس الکترونیکی موجود می باشد";
                        break;
                    default:
                        message = "ثبت نام با موفقیت انجام شد\\nUser Id: " + userId.ToString();
                        break;
                }
                ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + message + "');", true);
            }
        }
        }

زمانی که با موفقیت ثبت نام انجام می شود پیغام زیر را نمایش می دهد

زمانی که نام کاربری موجود باشد پیغام زیر را نمایش می دهد

زمانی که رمز عبور موجود باشد پیغام زیر را نمایش می دهد

در جدول هم یک کاربر به جدول اضافه  می شود.

 

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید