التغطية المصورة ليوم سوالف: الجزء الأول، الجزء الأخير
الفائزون في المسابقة الأصغر لسوالف كاست

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > ASP و ASP.NET
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
عضو نشيط
تاريخ التسجيل: Jun 2006-
#1 (permalink)  
مثال لاستخدام السيشن في الحماية - صفحة دخول محمية 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

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






__________________
احنا بكل فخر واخلاص باغة باروده ورصاص
وصقور تحب المقناص بجو الأردن عاليه
وفوق الأردن عاليه ........
nothing4u غير متواجد حالياً   قديم 02-06-2006, 07:30 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Dec 2001-
#2 (permalink)  

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

ولكن سؤال ...

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






SQL غير متواجد حالياً   قديم 03-06-2006, 09:21 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jun 2006-
#3 (permalink)  

السلام عليكم

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

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

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

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






__________________
احنا بكل فخر واخلاص باغة باروده ورصاص
وصقور تحب المقناص بجو الأردن عاليه
وفوق الأردن عاليه ........
nothing4u غير متواجد حالياً   قديم 03-06-2006, 11:22 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Dec 2001-
#4 (permalink)  

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


اشكرك






SQL غير متواجد حالياً   قديم 04-06-2006, 12:01 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jun 2006-
#5 (permalink)  

اخوي جرب انت الان اعمل التالي
في صفحة 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
الان ادخل الصفحة الاولى رح يحولك للصفحة الثانيه وبعدين يحولك لموقع سوالف سوفت لان في الصفحة الاولى تحقق الشرط فحولة للثانيه وفي الثانيه تحقق وحوله لسوالف سوفت

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

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


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

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






__________________
احنا بكل فخر واخلاص باغة باروده ورصاص
وصقور تحب المقناص بجو الأردن عاليه
وفوق الأردن عاليه ........
nothing4u غير متواجد حالياً   قديم 04-06-2006, 02:01 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Feb 2003-
#6 (permalink)  

شكرا ً






Rings غير متواجد حالياً   قديم 04-06-2006, 09:44 AM
رد مع اقتباس
رد


 

أدوات الموضوع

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

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة



الساعة الآن: 12:27 PM بتوقيت المملكة العربية السعودية