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

الموضوع: مثال لاستخدام السيشن في الحماية - صفحة دخول محمية asp.net

  1. #1

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

    مثال لاستخدام السيشن في الحماية - صفحة دخول محمية asp.net





    مثال بسيط لصفحة دخول محمية





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

    هذه هي فكرة المثال البسيط والاكواد للصفحات تكون هكذا


    كود الصفحة الاولى

    كود:
        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
            ' الشرط التالي يتحقق من ادخاله لقيم في صندوق اسم المستخدم وصندوق كلمة المرور
            If TextBox1.Text = "" Then ' لم يدخل شيء في صندوق اسم المستخدم
                Label3.Text = "الرجاء ادخل اسم المستخدم"
            ElseIf TextBox2.Text = "" Then ' لم يدخل شيء في صندوق كلمة المرور
                Label3.Text = "الرجاء ادخال كلمة المرور"
            ElseIf TextBox1.Text = "" And TextBox2.Text = "" Then ' لم يدخل في الصندوقين
                Label3.Text = "الرجاء ادخال كلمة المرور واسم المستخدم"
            Else ' اي انه ادخل قيم في الصندوق لاسم المستخدم وكلمة المرور
                If TextBox1.Text = "ahmad" And TextBox2.Text = "ahmadpass" Then
                    ' الشرط للتحقق من صحة كلمة المرور واسم المستخدم
                    Session("User") = "ahmad" ' يسند اسم المستخدم للسيشن الخاص به
                    Session("Pass") = "ahmadpass" ' يسند كلمة المرور للسيشن الخاصه بها
                    Response.Redirect("WebForm2.aspx") ' يقوم بتحويله للصفحة الثانية
                Else ' في حالة عدم توافق كلمة المرور واسم المستخدم مع المدخلات
                    Label3.Text = "خطأ في كلمة المرور او اسم المستخدم"
                End If
            End If
        End Sub
    
        'هنا نعرف نفس الكود ولكن في زر اخر وباسلوب يختلف قليلا عن الاسلوب في الزر الاول
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            If TextBox1.Text = "" Then
                Label3.Text = "الرجاء ادخل اسم المستخدم"
                Exit Sub '' خروج من الدالة كاملة لكي نمنعه من تنفيذ باقي الكود بعد شرط التحقق
            ElseIf TextBox2.Text = "" Then
                Label3.Text = "الرجاء ادخال كلمة المرور"
                Exit Sub ' خروج من الدالة كاملة لكي نمنعه من تنفيذ باقي الكود بعد شرط التحقق
            ElseIf TextBox1.Text = "" And TextBox2.Text = "" Then
                Label3.Text = "الرجاء ادخال كلمة المرور واسم المستخدم"
                Exit Sub ' خروج من الدالة كاملة لكي نمنعه من تنفيذ باقي الكود بعد شرط التحقق
            End If
    
            ' اذا وصل التنفيذ لهذه النقطة هذا يعني انه قد تخطى الشروط اعلاه
            ' دون ان يدخل في اي شرط منها - ولو كان قد دخل في اي شرط
            ' لكان قد نفذ الامر Exit Sub 
            'وهذا الامر يقوم باخراجه من الدالة كاملة ولن يصل لهذه المرحلة
    
            If TextBox1.Text = "ahmad" And TextBox2.Text = "ahmadpass" Then
                Session("User") = "ahmad"
                Session("Pass") = "ahmadpass"
                Server.Transfer("WebForm2.aspx")
            Else
                Label3.Text = "خطأ في كلمة المرور او اسم المستخدم"
            End If
    
        End Sub


    كود الصفحة الثانية


    كود:
        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
            If Session("User") = "0" And Session("Pass") = "0" Then
                'اذا تحقق الشرط اعلاه هذا يعني ان الزائر لم يدخل لهذه الصفحة بطريقة 
                'شرعيه وهي من خلال تسجيل الدخول في الصفحة الاولى ولو كان قد سجل الدخول
                'فكان يجب ان يتم تغيير القيم الافتراضيه للشيشن واسناد اسم المستخدم وكلمة المرور
                'لذلك نقوم بتحويله واعادته للصفحة الاولى وهي صفحة تسجيل الدخول
                Response.Redirect("WebForm1.aspx") ' هنا يقوم بتحويل الزائر الي الصفحة الاولى
            Else
                ' اذا كانت هناك قيم اخرى في السشين فهذا يعني انه قد سجل دخول في الصفحة الاولى
                ' وقد قبل تسجيل دخوله وحوله بطريقة شرعية للصفحة الثانيه لذلك نقوم بعرض
                ' معلوماته وهي اسم المستخدم وكلمة المرور
                Label1.Text = "اهلا وسهلا بك في لوحة تحكمك <br> اسم المستخدم : " & Session("User") & "<br> كلمة المرور : " & Session("Pass")
            End If
        End Sub



    تعريف ال سيشن
    session
    في ملف
    Global.asax



    كود:
        Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
            ' Fires when the session is started
            Session("User") = "0" ' تم اسناد القيمة صفر كقيمة افتراضية للمتغير الخاص باسم المستخدم
            Session("Pass") = "0" ' تم اسناد القيمة صفر كقيمة افتراضية للمتغير الخاص بكلمة المرور
        End Sub

    في امان الله ولا تنسونا من دعائكم ابدا





    __________________
    @_@


  2. #2
    عضو نشيط
    تاريخ التسجيل
    Dec 2001
    المشاركات
    64


    بارك الله فيك .

    ولكن سؤال ...

    هل من الضروري تعريف السيشن في Global.asax






  3. #3

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


    السلام عليكم

    لا اخوي طبعا ماهو شرط انها تتعرف في الملف Global.asax
    ممكن تكتبها في المكان الي تبي تستخدمه فيه من المشروع وتستخدمها مباشرة بنفس الطريقة
    وهكذا يتم تعريف السيشن لحظة تنفيذ السطر الي انت معرف السيشن فيه

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

    اقصد بتعريف السيشن هنا هو تسميته واسناد قيمة ابتدائية له

    لكن ملف ال Global.asax وتحديدا الدالة Session_Start
    هذه يتم تنفيذها اول دخول المتصفح للموقع ومن اي صفحة يدخل منها مو مهم لانه اول ما يدخل اي صفحة من صفحات موقعك رح يتم تعريفه دون مشاكل





    __________________
    @_@

  4. #4
    عضو نشيط
    تاريخ التسجيل
    Dec 2001
    المشاركات
    64


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


    اشكرك






  5. #5

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


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

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

    كود:
    Session("X") = "0"
            If Session("X") = "0" Then
                Response.Redirect("WebForm2.aspx")
            End If
    حيث اننا هنا
    كود:
    Session("X") = "0"
    عرفنا السيشن او بمعنى ثاني اسندنا له قيمة ابتدائية وممكن نغيريها في اي مكان ثاني على راحتنا

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

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

    في حدث تحميل الصفحة حط هذا الكود

    كود:
    If Session("X") = "0" Then
                Response.Redirect("http://www.swalif.net")
            End If
    الان ادخل الصفحة الاولى رح يحولك للصفحة الثانيه وبعدين يحولك لموقع سوالف سوفت لان في الصفحة الاولى تحقق الشرط فحولة للثانيه وفي الثانيه تحقق وحوله لسوالف سوفت

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

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


    لو في اي ملاحظات ياريت تبلغني بها ولو في اي خطأ في كلامي كمان بلغني وبكون ممنون لك

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





    __________________
    @_@

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Feb 2003
    المشاركات
    153


    شكرا ً










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

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

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