النتائج 1 إلى 7 من 7

الموضوع: مثال عملي على قواعد البيانات ado.net تسجيل ودخول وتعديل معلومات وتفعيل عضوية والحذف

  1. #1

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370

    مثال عملي على قواعد البيانات ado.net تسجيل ودخول وتعديل معلومات وتفعيل عضوية والحذف



    السلام عليكم

    فكرة المثال هي عبارة عن موقع
    يحتوي صفحة الدخول الاولى التي تحتوي على مكان لادخال اسم المستخدم وكلمة المرور
    ومنها يدخل المستخدم للصفحة الثانية التي يتم بها عرض معلوماته وتعديل معلوماته وحذفها وخذف الحساب وتفعيل العضوية

    ملاحظة مهمه :- المثال للمدربين حاولت قدر المستطاع انه يكون الكود بسيط ومفهوم بغض النظر عن عدد الاسطر البرمجية فيه او عن قوة ادائة -- فالهدف فيه هو انه يكون مفهوم بالدرجة الاولى , في مرحلة لاحقة ممكن تبرمج نفس هذه الصفحات بعدد اسطر برمجية يكون نصف الاسطر الموجوده في المثال وبقوة اداء اكبر ولكن في مثالنا هذا لنا اهداف غير قوة اداء الكود او قلة عدد الاسطر فيه --- كذلك هو يستخدم قواعد بيانات اكسس لسهولتها في البداية


    في المثال ستجد اني اشرت الي دالة ارسال البريد الالكتروني وموضوع دالة ارسال البريد تلاقيه هنا
    http://www.swalif.net/softs/showthread.php?t=159945


    المثال في المرفقات وهذا هو الشرح




    صفحة الدخول
    start.aspx

    كود:
        Public Con1 As OleDb.OleDbConnection = New OleDb.OleDbConnection
        Public ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\WebApplication1\mydab1.mdb;Persist Security Info=False"
        Public Adapter1 As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
        Public DataSet1 As New DataSet
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Put user code to initialize the page here
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                Con1.ConnectionString = ConStr
                Dim SQLStr As String = "select * from Users where Name Like '" + TextBox1.Text + "'"
    
                If Con1.State = ConnectionState.Closed Then
                    Con1.Open()
                End If
    
                Dim Cmd1 As OleDb.OleDbCommand = New OleDb.OleDbCommand(SQLStr, Con1)
                Adapter1.SelectCommand = Cmd1
                Adapter1.Fill(DataSet1)
    
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
    
                If DataSet1.Tables(0).Rows.Count = 0 Then
                    Label3.Text = "اسم المستخدم غير موجود الرجاء التأكد من اسم المستخدم"
                    Exit Sub
                End If
    
                If TextBox2.Text <> DataSet1.Tables(0).Rows(0)(3) Or TextBox1.Text <> DataSet1.Tables(0).Rows(0)(2) Then
                    Label3.Text = "اسم مستخدم غير صحيح او كلمة مرور غير صحيحة الرجاء التأكد"
                    Exit Sub
                End If
    
                Response.Redirect("control.aspx?Un=" + TextBox1.Text + "")
    
    
            Catch ex As Exception
                Label3.Text = ex.Message
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
            End Try
        End Sub






    صفحة نجاح التسجيل او نجاح الدخول
    control.aspx

    كود:
        Public Con1 As OleDb.OleDbConnection = New OleDb.OleDbConnection
        Public ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\WebApplication1\mydab1.mdb;Persist Security Info=False"
        Public Adapter1 As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
        Public DataSet1 As New DataSet
        Dim UnameE As String
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Put user code to initialize the page here
    
            Try
                UnameE = Request.Item("Un")
                Con1.ConnectionString = ConStr
                Dim SQLStr As String = "select * from Users where Name Like '" + UnameE + "'"
    
                If Con1.State = ConnectionState.Closed Then
                    Con1.Open()
                End If
    
                Dim Cmd1 As OleDb.OleDbCommand = New OleDb.OleDbCommand(SQLStr, Con1)
                Adapter1.SelectCommand = Cmd1
                Adapter1.Fill(DataSet1)
    
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
    
                Label8.Text = DataSet1.Tables(0).Rows(0)(0)
                Label9.Text = DataSet1.Tables(0).Rows(0)(1)
                Label10.Text = DataSet1.Tables(0).Rows(0)(2)
                Label11.Text = DataSet1.Tables(0).Rows(0)(3)
                Label12.Text = DataSet1.Tables(0).Rows(0)(4)
                Label13.Text = DataSet1.Tables(0).Rows(0)(5)
    
    
            Catch ex As Exception
                Label1.Text = ex.Message
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
            End Try
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Response.Redirect("deletepage.aspx?Un=" + UnameE + "")
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Response.Redirect("edit.aspx?Un=" + UnameE + "")
        End Sub





    صفحة تسجيل عضو جديد
    sign.aspx
    كود:
        Public Con1 As OleDb.OleDbConnection = New OleDb.OleDbConnection
        Public ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\WebApplication1\mydab1.mdb;Persist Security Info=False"
        Public Adapter1 As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
        Public DataSet1 As New DataSet
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Put user code to initialize the page here
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
    
                Con1.ConnectionString = ConStr
                Dim Sqlstr1 = "select * from Users where Name Like '" + TextBox3.Text + "'"
                Dim Cmd1 As OleDb.OleDbCommand = New OleDb.OleDbCommand
                If Con1.State = ConnectionState.Closed Then
                    Con1.Open()
                End If
                Cmd1.Connection = Con1
                Cmd1.CommandText = Sqlstr1
                Adapter1.SelectCommand = Cmd1
                Adapter1.Fill(DataSet1)
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
    
                If DataSet1.Tables(0).Rows.Count <> 0 Then
                    Label7.Text = "عذرا اسم المستخدم محجوز مسبقا"
                    Exit Sub
                End If
    
                If TextBox1.Text = "" Then
                    TextBox1.Text = "غير متوفر"
                End If
    
                If TextBox5.Text = "" Then
                    TextBox5.Text = "غير متوفر"
                End If
    
                If TextBox6.Text = "" Then
                    TextBox6.Text = "غير متوفر"
                End If
    
                Sqlstr1 = "insert into Users Values('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "')"
                If Con1.State = ConnectionState.Closed Then
                    Con1.Open()
                End If
                Cmd1 = New OleDb.OleDbCommand(Sqlstr1, Con1)
                Cmd1.ExecuteNonQuery()
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
                Response.Redirect("control.aspx?Un=" + TextBox3.Text + "")
    
    
            Catch ex As Exception
                Label7.Text = ex.Message
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
            End Try
        End Sub






    __________________
    @_@


  2. #2

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    صفحة حذف الاشتراك
    deletepage.aspx

    من خلال صفحة التحكم وهي نفسها صفحة نجاح التسجيل او الدخول
    سيكون هناك زر عند الضغط عليه ينقله لصفحة اخرى يطلب منه تاكيد حذف الحساب
    واذا قام بالتأكيد يقوم بحذف الحساب نهائيا من قاعدة البيانات

    نقوم بتمرير اسم المستخدم مع الرابط من صفحة التحكم الي صفحة تاكيد الحذف ويكون كود صفحة تأكيد الحذف كالتالي

    كود:
        Public Con1 As OleDb.OleDbConnection = New OleDb.OleDbConnection
        Public ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\WebApplication1\mydab1.mdb;Persist Security Info=False"
        Public Adapter1 As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
        Public DataSet1 As New DataSet
        Dim UnameE As String
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Put user code to initialize the page here
            UnameE = Request.Item("Un")
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Response.Redirect("control.aspx?Un=" + UnameE + "")
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
    
                Con1.ConnectionString = ConStr
                Dim SQLStrD As String = "delete * from Users where Name Like '" + UnameE + "'"
                Dim CmdD As OleDb.OleDbCommand = New OleDb.OleDbCommand(SQLStrD, Con1)
    
                Con1.Open()
                CmdD.ExecuteNonQuery()
                Con1.Close()
    
                Response.Redirect("deletsucc.aspx")
    
    
            Catch ex As Exception
                Label2.Text = ex.Message
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
    
            End Try
        End Sub




    كما يوجد زر اخر في مموذج صفحة التحكم اسمه حذف الاشتراك مباشرة
    وهذا يحتوي على كود حذف الاشتراك ولكن بالاعتماد على ادواة ال
    MessageBox
    بدلا من التنقل بي الصفحات لتحديث الاشتراك - فعند الضغط عليه يطلب منه تأكيد عملية الحذف من خلال
    رسالة تخرج له تحتوي على نعم او لا فاذا اختار نعم يقوم بحذف الاشتراك ومن ثم اعادته الي الصفحة الاولى

    messagebox لكي تستخدم الرسائل المنبثقه في صفحتك والمقصود بها هي ال
    يجب عليك تضمين مكتبة جديدة لمشروع فمن القائمة
    Project ---> add reference ---> .net
    قم باضافة المكتبة
    system.windows.forms.dll

    ولكي تستخدمها قم باستيرادها في اعلى الصفحة بهذه الطريقة
    imports system.windows.forms

    وهكذا يمكنك استخدام الرسائل المنبثقه في اي مكان تريده من الصفحة وتخزين القيمة العائده من الرسالة في متغير ومن ثم استخدام الناتج في جملة شرطيه

    ملاحظة في بعض الاحياة قد تختار نوع معين من الرسائل مثلا نعم و لا او موافق وغير موافق وغيرها من الانواع
    وقد لا تكون على علم بنوع القيمة التي يتم اعادتها لو اختار المستخدم نعم او اختار لا ولكي تعرف
    وهو قادر على استيعاب كل انواع المتغيرات في داخله بهذا الشكل object قم بتعريف متغير من نوع
    Dim TE as Object = Messagebox.Show ( ....... )
    ومن ثم ثم بعرض المتغير في اداة نص او صندوق وجرب تشغيل البرنامج واختار ماتريد وشاهد ما سوف يعود في الصندوق ويكون هو نفسه القيمة المعاده التي ترجع بها هذا النوع من الرسائل

    مثلا في مثالنا سوف نستخدم رسالة من النوع نعم و لا وهي ترجع بقيمة رقمية
    فاذا اختار نعم ترجع برقم 6 ولو اختار لا ترجع برقم 7

    فيكون كود الرساله المنبثقه هكذا

    كود:
    Dim MR As Integer
                MR = MessageBox.Show("هل انت متأكد من انك تردي ان تقوم بحذف الحساب؟؟", "رسالة تأكيد", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2, MessageBoxOptions.ServiceNotification)

    الكود الكامل يكون هكذا

    كود:
    Imports System.Windows.Forms 'يتم استيرادها في اعلى الصفحة بعد اضافة المكتبة
    
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Try
    
                Dim MR As Integer
                MR = MessageBox.Show("هل انت متأكد من انك تردي ان تقوم بحذف الحساب؟؟", "رسالة تأكيد", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2, MessageBoxOptions.ServiceNotification)
    
                If MR = 7 Then
                    MessageBox.Show("لقد تم الغاء العملية", "الغاء", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification)
                    Exit Sub
                End If
    
                Dim SqlStr = "delete from Users where Name Like '" + UnameE + "'"
                Dim Cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(SqlStr, Con1)
                Con1.Open()
                Cmd.ExecuteNonQuery()
                Con1.Close()
    
                Response.Redirect("deletsucc.aspx")
    
            Catch ex As Exception
                Label1.Text = ex.Message
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
            End Try
    
        End Sub

    ملاحظة مهمه ::::: ::::::::::::

    الرساله المنبثقه المستخدمه هنا بها عيب خطير جداً وهو اننا قمنا بأضافة مكتبة جديدة للمشروع فلن تعمل الرساله من دونها
    ويجب ان تكون موجوده مسبقاً على جهاز الزبون او الجهاز الذي سيقوم بتصفح الموقع ولو حاولت ان تقوم بتجربتها من جهاز اخر فسوف يتم تطبيقها على جهاز الخادم او الجهاز الرئيسي الموجود عليه الموقع اي ان الرساله لن تخرج لك انت ولكن ستخرج على الجهاز الرئيسي الذي عليه الموقع وسيتم تنفيذها هنا بانتظار الموافقه من عدمها من قبل مستخدم الجهاز الرئيسي
    وهذا طبعا امر غير مقبول وغير عملي

    الطريقة البديلة هي استخدام الجافاسكربت في الرسائل المنبثقه حيث انها مدعوه من قبل معضم المتصفحات بشكل افتراضي



    صفحة تحديث البيانات
    edit.aspx

    عند الضغط على زر تحديث البيانات في صفحة لوحة التحكم ينقله الي صفحة اخرى لتحديث او تغيير بياناته
    نقوم بتمرير اسم المستخدم عن طريق الرابط من صفحة التحكم الي صفحة تحديث البيانات يستطيع المستخدم في صفحة التحديث ان يقوم بتغيير كلمة مرورة وباقي بياناته ما عدا اسم المستخدم طبعاً , ونموذج الصفحة مرفق مع المثال المرفق مع هذا الشرح ويكون كود صفحة التحديث هكذا


    كود:
        Public Con1 As OleDb.OleDbConnection = New OleDb.OleDbConnection
        Public ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\WebApplication1\mydab1.mdb;Persist Security Info=False"
        Public Adapter1 As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
        Public DataSet1 As New DataSet
        Dim UnameE As String
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Put user code to initialize the page here
            Try
    
                UnameE = Request.Item("Un")
    
                Con1.ConnectionString = ConStr
                Dim SQLStr As String = "select * from Users where Name Like '" + UnameE + "'"
                Con1.Open()
                Dim Cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(SQLStr, Con1)
                Adapter1.SelectCommand = Cmd
                Adapter1.Fill(DataSet1)
                Con1.Close()
    
    
                TextBox4.Text = DataSet1.Tables(0).Rows(0)(2)
                TextBox5.Text = DataSet1.Tables(0).Rows(0)(0)
                TextBox6.Text = DataSet1.Tables(0).Rows(0)(1)
                TextBox7.Text = DataSet1.Tables(0).Rows(0)(4)
                TextBox8.Text = DataSet1.Tables(0).Rows(0)(5)
    
    
            Catch ex As Exception
                Label1.Text = ex.Message
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
    
            End Try
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
    
                If TextBox1.Text <> DataSet1.Tables(0).Rows(0)(3) Then
                    Label1.Text = "الرجاء ادخال كلمة المرور الصحيحة ! خطأ في كلمة المرور"
                    Exit Sub
                End If
    
                Dim SQLStrU As String
    
                If TextBox2.Text <> "" Or TextBox3.Text <> "" Then
                    If TextBox2.Text = TextBox3.Text Then
                        SQLStrU = "update Users set FullName='" + TextBox5.Text + "',Email='" + TextBox6.Text + "',Pass='" + TextBox2.Text + "',Country='" + TextBox7.Text + "',Phone='" + TextBox8.Text + "' where Name Like '" + TextBox4.Text + "'"
                    Else
                        Label1.Text = "كلمة المرور الجديدة غير متطابقة الرجاء كتابة نفس الكلمة "
                        Exit Sub
                    End If
    
                Else
                    SQLStrU = "update Users set FullName='" + TextBox5.Text + "',Email='" + TextBox6.Text + "',Country='" + TextBox7.Text + "',Phone='" + TextBox8.Text + "' where Name Like '" + TextBox4.Text + "'"
                End If
    
                Dim CmdU As OleDb.OleDbCommand = New OleDb.OleDbCommand(SQLStrU, Con1)
                Con1.Open()
                CmdU.ExecuteNonQuery()
                Con1.Close()
    
                Label1.Text = "تم تحديث الحقول بنجااااااااح"
    
            Catch ex As Exception
                Label1.Text = ex.Message
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
    
            End Try
        End Sub
    
        Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
            Response.Redirect("control.aspx?Un=" + UnameE + "")
        End Sub






    __________________
    @_@

  3. #3

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    اضافة على المثال
    سوف نقوم باضافة عملية تفعيل الحساب على المثال السابق

    * ملاحظة: في المثال المرفق لم اقم بتطبيق هذا التعديل وهذا لانه يلزمه تعديل على قاعدة البيانات وتعديل على كود التسجيل السابق والمفروض انك سوف تطبق المثال من بدايته فسوف تجد حقول جديده في قاعدة البيانات لا تعرف لما هي موجوده اصلا لانك لن تكون قد وصلت لهذه المرحلة بعد لهذا فضلت عدم تطبيقه
    ولكنه مشروح هنا بالتفصيل الممل وتطبيقه لن يكون صعب عليك خصوصا انه يعتمد على دالة ارسال البريد الالكتروني التي سبق وشرحناها في درس سابق


    في صفحة التسجيل وبعد نجاح عملية التسجيل وقبل تحويله الي صفحة لوحة التحكم
    نقوم بعمل دالة ارسال بريد الكتروني حيث يتم ارسال بريد الكتروني الي المستخدم نرحب به في الموقع وكذلك يحتوي البريد الالكتروني على رابط لتفعيل الاشتراك

    فكرة هذا الرابط هي ان المستخدم عند التسجيل يكون حسابه غير مفعل ولا يمكنه استخدامه في اي ركن من اركان الموقع قبل ان يقوم بالضغط على رابط التفعيل اللذي يصله على بريده
    ويعني حالة الحساب AccountState يكون اسمه مثلا Users نقوم باضافة حقل جديد الي جدول ال
    هل الحساب فعال او غير فعال وبما ان هذا الحقل سوف يأخذ قيمتين اما صح او خطأ
    Boolean Yes/No فانه يكون من نوع
    No او Yes يأخذ قيمتين اما
    No وفي جملة الاضافة عند عملية التسجيل نرسل لهذا الحقل القيمة الافتراضية
    اي ان الحساب يكون غير مفعل

    وفي دالة ارسال البريد الالكتروني نرسل له رابط نسميه رابط التفعيل وعند ضغط المستخدم على هذا الرابط يتم تحويل القيمة المخزنة في حقل حالة الحساب من لا الي نعم وهكذا يكون الحساب قد تم تفعيله

    وفي موقعنا وقبل اي خطوة نمنع المستخدم من استخدامها الا اذا كان حساب مفعل نقوم بفحص القيمة الموجوده في حقل حالة الحساب اذا كانت لا نمنعه ونخرج له رساله تخبره ان حسابه غير مفعل واذا كانت نعم نسمح له بالدخول

    اما رابط تفعيل الحساب فتكون فكرته كما يلي

    ActAccount.aspx اولا نقوم بعمل صفحة خاصه لتفعيل الحساب نسميها مثلا
    ونضع بها جملة عادية تخبره انه قد تم تفعيل حسايه وتنتقل به للصفحة الاولى او صفحة التسجيل

    في الرساله التي سوف نقوم بارسالها نرسل له رابط ونمرر مع هذا الرابط قيم عن طريق الرابط مثلا نرسل الرابط التالي
    http://localhost/WebApplication/ActA...px?Un=USERNAME
    لاحظ اننا ارسلنا لصفحة تفعيل الاشتراك اسم المستخدم عبر الرابط حيث ان
    هي اسم المستخدم USERNAME
    وفي صفحة تفعيل الاشتراك نقوم باستقبال اسم المستخدم في متغير ومن ثم نتصل مع قاعدة البيانات فاذا كان اسم المستخدم متطابق مع اسم المستخدم الموجود في قاعدة البيانات اذا فانه قد اتبع رابط صحيح ويتم تفعيل الاشتراك وغير هذا نحوله لصفحة اخرى نخبره انه اتبع رابط غير صحيح او حدوث خطأ

    في رابط تفعيل الاشتراك اعلاه لاحظ انه يحتوي على ثغره مهمه جدا غير منطقيه ابدا وهي انه اذا استطاع اي شخص معرفة اننا نقوم بطلب تفعيل الاشتراك عن طريق اسم المستخدم فقط فلن يكون صعب عليه ان يقوم بوضع اسم المستخدم الخاص به بدلا من المتغير في الرابط وهكذا يقوم بتفعيل اشتراكه من دون الحاجه لوصول الرساله له وهكذا فهو غير ملزم بكتابة بريده الصحيح او باتباع الرابط الذي يرسل له على بريده

    ولكن الهدف من رسالة التفعيل هو اولا التأكد من ان المستخدم كتب بريده الالكتروني الخاص به وليس بريد احد غيره وكذلك كتب بريد الكتروني صحيح موجود وليس بريد الكتوني غير مستخدم

    لهذا يجب علينا ان نزيد من نسبة الامان في الرابط اعلاه وهو باضافة كود تفعيل العضوية
    وكود تفعيل العضوية يكون عبارة عن رقم او نص يتم توليده عشوائياً
    اذا ما سنقوم به هو اننا وقبل دالة الارسال سوف نقوم بتوليد رقم عشوائي
    Users وتوليده في حقل جديد في جدول ال
    ActCode يكون اسم الحقل مثلا
    ويتم ارسال هذا الكود كذلك مع الرابط ونستقبله في صفحة التفعيل فاذا تطابق اسم المستخدم وكود تفعيل العضوية مع اسم المستخدم وكود التفعيل الموجود في قاعدة البيانات يكون هذا المستخدم قد قام باستقبال الرساله وضغط على الرابط فعلا لان كود التفعيل لا يمكن لاحد ان يعرفه الا من خلال الرساله التي سوف تصله او من خلال قاعدة البيانات مباشرة فقط

    يوجد طريقة اخرى لتفعيل الحساب هي ان نطلب منه ان يقوم بادخال الاسم والكود الذي تم ارساله الي رسالته في صفحة التفعيل ومن ثم التأكد من صحتها وهي نفس الطريقة ولكن بدلا من ارسال الكود والاسم مع الرابط نرسلهم للمستخدم في الرساله وهو يقوم بادخالهم بشكل يدوي في صفحة التفعيل ومن ثم الضغط على زر تفعيل الاشتراك

    في الشرح سوف نستمر على الطريقة الاولى وهي طريقة ارسال الكود والاسم مع الرابط
    ويفضل استخدام الطريقتين يعني اضافة صفحة ثانية لكتابة الاسم والكود والتفعيل منها كذلك
    وتسمي الاولى بالتفيل المباشر وتسمي الثانيه بالتفعيل اليدوي وترسل الطريقتين للمستخدم


    وصلنا الان الي مرحلة توليد كود تفعيل العضوية العشوائي وتخزينه في قاعدة البيانات
    وبعد ان ننتهي من هذا نكون قد انتهينا من صناعة مسلزمات التفعيل ويبقى فقط ارسالها للمستخدم في دالة ارسال رساله على البريد الالكتروني وسبق ان تم شرح طريقة عمل دالة الارسال في درس سابق

    نقوم بتعريف متغير من نوع نص ونخزن فيه قيمة عشوائيه من ثمانية ارقام وهذا يكون عبارة عن كود التفعيل
    ActCode وبعد توليده نقوم بتخزينه في قاعدة البيانات في حقل

    وطريقة توليد الكود العشوائي من نوع نص يتكون من ثمانية ارقام هي التاليه


    كود:
    Dim RNum As Integer = Int(10000000 * Rnd() + 1)



    وتكون جملة الاضافة كاملة للحساب هي

    كود:
    Sqlstr1 = "insert into Users Values('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "' , False , '" + RandCode + "')"


    اذا بعد نجاح التسجيل وقبل تحويل المستخدم الي صفحة لوحة التحكم او صفحة نجاح التسجيل
    تضع الكود التالي وهو كامل لعملية توليد كود العضوية وعملية تخزينه في حقل قاعدة البيانات ومن ثم ارسال البريد الالكتروني الذي يحتوي على رابط التفعيل لاحظ اننا قمنا بتوليد الرقم العشوائي قبل جملة الاضافه للحساب كامل وقمنا باضافة الرقم العشوائي مع اضافة الحساب ومن ثم ارسلناه مع الرابط المرسل على الرساله فسوف يكون الكود هنا نفس الكود في صفحة تسجيل اضافة عضو جديد ولكننا سوف نضيف عليه ما يلزمنا ولهذا سوف نقوم بتعديل الكود في صفحة اضافة عضو جديد فقط من جملة الاضافة فنحذف جملة الاضافة وما بعدها ونعدلها بالكود التالي

    في اعلى الصفحة نستعدي التالي
    Imports System.Web.Mail






    الكود هو التالي


    كود:
                Dim RNum As Integer = Int(10000000 * Rnd() + 1)
                Dim RandCode As String = RNum
                Sqlstr1 = "insert into Users Values('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "' , False , '" + RandCode + "')"
                If Con1.State = ConnectionState.Closed Then
                    Con1.Open()
                End If
                Cmd1 = New OleDb.OleDbCommand(Sqlstr1, Con1)
                Cmd1.ExecuteNonQuery()
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
    
                Dim SMail As Mail.MailMessage = New Mail.MailMessage
                SMail.From = "Webmaster@Web.net" ' عنوان إدارة الموقع
                SMail.To = TextBox2.Text
                SMail.Subject = "رسالة تفعيل العضوية"
                Dim MUrl As String = "http://localhost/WebApplication?Un=" + TextBox3.Text + "&Ucode=" + RandCode + ""
                SMail.Body = "اهلا وسهلا بك في موقعنا قم بالضغط على الرابط لتفعيل اشتراكك  " & MUrl
                SMail.BodyEncoding = System.Text.Encoding.GetEncoding("windows-1256")
                Mail.SmtpMail.SmtpServer = "localhost"
                Mail.SmtpMail.Send(SMail)
    
                Response.Redirect("control.aspx?Un=" + TextBox3.Text + "")


    في صفحة تفعيل العضوية
    ActAccount.aspx
    نقوم باستقبال اسم المستخدم وكود التفعيل الذي يتم ارسالهما مع الرابط
    ونفحصهما مع قاعدة البيانات
    اولا نجلب كود العضوية للحساب الخاص ياسم المستخدم من قاعدة البيانات ونقارنه مع كود العضوية المرسل مع
    Yes الرابط فاذا تطابق نقوم بتحديث حقل حالة الحساب ونجعل قيمة
    وهكذا نكون فعلنا الحساب

    كود صفحة التفعيل يكون هكذا

    كود:
        Public Con1 As OleDb.OleDbConnection = New OleDb.OleDbConnection
        Public ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\WebApplication1\mydab1.mdb;Persist Security Info=False"
        Public Adapter1 As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
        Public DataSet1 As New DataSet
        Dim UnameE As String
        Dim UActCode As String
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Put user code to initialize the page here
            Try
            
                UnameE = Request.Item("Un")
                UActCode = Request.Item("Ucode")
    
                Dim SqlStr As String = "select ActCode from Users where Name Like '" + UnameE + "'"
                Con1.ConnectionString = ConStr
                Con1.Open()
                Dim Cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(SqlStr, Con1)
                Adapter1.SelectCommand = Cmd
                Adapter1.Fill(DataSet1)
                Con1.Close()
    
                If DataSet1.Tables(0).Rows.Count = 0 Then
                    Label1.Text = "لم يتم العثور على كود العضوية في قاعدة البيانات"
                    Exit Sub
                End If
    
                If UActCode <> DataSet1.Tables(0).Rows(0)(0) Then
                    Label1.Text = "حذث خطأ كود تفعيل العضوية غير صحيح"
                    Exit Sub
                End If
    
                SqlStr = "update Users set AccountState = True"
                Cmd.Connection = Con1
                Cmd.CommandText = SqlStr
                Con1.Open()
                Cmd.ExecuteNonQuery()
                Con1.Close()
    
                Label1.Text = "تم تفعيل الحساب بنجاح"
    
    
            Catch ex As Exception
                Label1.Text = ex.Message
                If Con1.State = ConnectionState.Open Then
                    Con1.Close()
                End If
            End Try
        End Sub


    واي سؤال انا موجود وبالتوفيق ان شاء الله

    في امان الله وحفظة






    __________________
    @_@

  4. #4

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    لتحميل المثال من هنا
    http://www.9q9q.net/index.php?f=02XLnkol





    __________________
    @_@

  5. #5
    عضو نشيط جدا
    تاريخ التسجيل
    Jul 2002
    المشاركات
    534


    إبداااااع أخي الكريم ..

    والله إني كنت أنتظر مثل هذه الدروس على أحر من الجمر

    تسلم وواصل .. وأنا الآن خارج المنزل ..

    وبإذن الله سأوافيك بما يستجد معي





    __________________
    بداية للمشاريع التجارية

    ASP.NET,ASP 3.0

    المدونة الشخصية : asp2asp.com

    عدنا والعود أحمد...

  6. #6
    عضو نشيط جدا
    تاريخ التسجيل
    Jul 2002
    المشاركات
    534


    أخي الكريم .. الكود لا يستخدم شيفرة HTML واحده!!

    والحقيقة إنني سأحتفظ بهذا المشروع لدي .. بينما أنتهي من توفير البيئة المناسبة للعمل .. وأشكر لك تلبية طلبي ..

    وأتمنى أن نستمر سويا في مشروع الدعم الفني .. الذي أرى أنه الطريق لتعلم هذه اللغة ..

    شاكر ومقدر لك جهودك ..





    __________________
    بداية للمشاريع التجارية

    ASP.NET,ASP 3.0

    المدونة الشخصية : asp2asp.com

    عدنا والعود أحمد...

  7. #7

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    اخي asp2asp
    شيفرة ال html ستجدها موجوده في الصفحات الي باسم xx.aspx حيث xx هو اسم الصفحة
    الشيفره البرمجية وهي الي مكتوبة هنا ستجدها في ملف xx.aspx.vb وهو ماتسمى بالشيفرة الخلفية او الكود الخلفي

    مثلا في الصفحة xx.aspx ستجد يوجد اداة اسمها button1 مثلا
    في اول سطر بالصفحة رح تجد انه استدعى ملف الشيفره الخلفيه للصفحة والي هو باسم
    xx.aspx.vb وفي ملف الشيفره الخلفية ستجد دالة الحدث التالي
    button1_click
    وهكذا

    ان شاء الله تعالى نبدأ في مشروع الدعم الفني خطوة خطوة ومارح يكون صعب ابدا





    __________________
    @_@





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض