الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة مع الlog out

مغلق
بدأه محمد الهباش في 21 فبراير 2006 · 13 رد · 1,151 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي المشكلة التالية الا وهي عندما احاول عمل عملية الlog out لا تنفع معي مع اني احذف الsession اضع له session.Abandon

هذا طبع لعمل الlog out من اللوحة التحكم اسم لوحة التحكم هي cp.aspx

لكن عندما اضع عنوان لوحة التحكم في الaddress bar يدخل على لوحة التحكم كاني لم افعل شي ولم اعمل تسجيل خروج فما الحل لذلك ؟

بالمناسبة انا اعمل بكود سي شارب

نموت وتحيا ...................فلسطين .

#2

هذه المشكلة برأيي المتواضع أنه في حالات كون أن الجلسة session لا تنتهي إلا بإغلاق النافذة (و لا أدري إذا كان فريق المطورين في مايكروسوفت يعملون لإصلاحها ) .

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

#3
محمد الهباش كتب:
لدي المشكلة التالية الا وهي عندما احاول عمل عملية الlog out لا تنفع معي مع اني احذف الsession اضع له session.Abandon

هذا طبع لعمل الlog out من اللوحة التحكم اسم لوحة التحكم هي cp.aspx

لكن عندما اضع عنوان لوحة التحكم في الaddress bar  يدخل على لوحة التحكم كاني لم افعل شي ولم اعمل تسجيل خروج فما الحل لذلك ؟

بالمناسبة انا اعمل بكود سي شارب

هذا يعتمد على طريقة تشييكك على ال session بالنسبة للمستخدم.

الحال الأمثل (إذا أردت استخدام طريقة ال session) هو أن تقوم بالإنتقال إلى صفحة الدخول بعد تدمير ال session باستخدام Response.Redirect

بالتوفيق

logo.gif
استضافة ويندوز


اقتباس

مساحة تبدأ من 2000 ميجا بايت بسعر 1.99 دولار شهريا.ا

اقتباس

ASP.NET 1.1-2.0-3.0-3.5-4.0-4.5.1 / MVC ASP.NET / PHP 5.x / ColdFusion / MSSQL 2008 & 2012 / MYSQL

#4

اعتقد انك ممكن تعمل ان الsession تساوي null دا لو انت #c

لو انت vb تبقى nothing

وفوق كل ذي علم عليم

والله اعلم

الملك ------>محمد ابو تريكة

abutreika.jpg

على اسم مصر التاريخ يقدر يقول ما شاء

أنا مصر عندي أحب وأجمل الأشياء

باحبها وهي مالكه الأرض شرق وغرب

وباحبها وهي مرميه جريحة حرب

باحبها بعنف وبرقة وعلى استحياء

واكرهها وألعن أبوها بعشق زي الداء

واسيبها واطفش في درب وتبقى هي ف درب

وتلتفت تلقيني جنبها في الكرب

والنبض ينفض عروقي بألف نغمة وضرب

على اسم مصر

#5
smiling4ever كتب:
الحال الأمثل (إذا أردت استخدام طريقة ال session) هو أن تقوم بالإنتقال إلى صفحة الدخول بعد تدمير ال session باستخدام Response.Redirect

بالتوفيق

لكن حسب معلوماتي (VB.net ) أن Response.Redirect تبقي session متاحة للصفحة الهدف لمرة واحدة (مشكلة موجودة ) !!!!!

#6

السلام عليكم

from MSDN

Session identifiers for abandoned or expired sessions are recycled by default. That is, if a request is made that includes the session identifier for an expired or abandoned session, a new session is started using the same session identifier. You can disable this by setting regenerateExpiredSessionId attribute of the sessionState configuration element to true

#7

هل يمكن أخ Muhammad Adel أن تعطينا الوصلة للموضوع الذي ذكرته ؟

#9

عند استخدام الـ Session عادة يتم تنفيذ ما يلي:

في الحدث OnSessionStart في الملف Global:

Session["islogin"] = 0;

وعند تنفيذ عملية الدخول باستخدام كلمة مرور + اسم مستخدم بنجاح:

Session["islogin"] = 1;

بفرض أن الصفحة cpanel.aspx لا يدخلها إلا الأعضاء فقط:

if (Session["islogin"].ToString() == "0")
{
   Response.Redirect("login.aspx");
}

وعند تسجيل الخروج:

Session["islogin"] = 0;

تم تعديل هذه المشاركة بواسطة إسماعيل عنجريني في 22 فبراير 2006 في 17:11

#10

شكرا اخي اسماعيل

نموت وتحيا ...................فلسطين .

#11
محمد الهباش كتب:
لدي المشكلة التالية الا وهي عندما احاول عمل عملية الlog out لا تنفع معي مع اني احذف الsession اضع له session.Abandon

هذا طبع لعمل الlog out من اللوحة التحكم اسم لوحة التحكم هي cp.aspx

لكن عندما اضع عنوان لوحة التحكم في الaddress bar  يدخل على لوحة التحكم كاني لم افعل شي ولم اعمل تسجيل خروج فما الحل لذلك ؟

بالمناسبة انا اعمل بكود سي شارب

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

أتمنى أن تأتي بمعلومات علمية دقيقة كي لا تثبت معلومات خطأ بالنسبة للقراء الجدد خاصة و سأطرح لك أمثلة

-هل تنتهي الجلسة عن وصولها لل TimeOut؟

-هل تنتهي الجلسة عند إستخدام الطريقة Remove؟

-هل تنتهي الجلسة عند استخدام RemoveAll؟

-هل تنتهي الجلسة عند إستخدام الطريقة Abandon؟

-هل تنتهي الجلسة عند إغلاق المتصفح؟

الجواب لجميع الاسئلة نعم و هي معلومات شائعة يعني ما في داعي تكتب "حسب علمي" لان المعلومة يجب أن تكون مثبتة علميا أو عمليا.

بخصوص طريقتك في تمرير المتغيرات من خلال ال URL Address فهذا بالعادة شيء خطير جدا إن كنت تود إرسال معلومات انت معني بإخفائها ككلمات المرور و يفضل على الأقل إستخدام الجلسة Session أو تلجأ لموضوع ال Forms Authn.

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

Tools > Internet Options > Temporary Internet files >>Settings

و اختر أن يتم جلب الصفحة في كل مرة يتم تمرير ال URL لنفس المتصفح.

طريقة مثالية لتجنب المشكلة ...

بالعادة تكون هناك صفحة كواجهة للمدير يدخل منها للخصائص..

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

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

بالتوفيق

You can fly while you can touch the sky

#12

أخي الكريم محمد خليل أبو صلاح :

أولاً : لا يمكن في الحقيقة أن أقارن معرفتي بخبرتك و معرفتك و اطلب منك سعة الصدر في تصحيح معلومات قد تبدو صحيحة نتيجة لتجربة عملية معينة و لكنها خاطئة ...

ثانياً : عندما قلت (حسب معلوماتي ) للأخ smilling4ever بسبب أن Response.redirect لا تنهي الجلسة فعلاً بدليل أن المتحولات التي تخزنها داخل session تبقى في الصفحة الهدف ...

ثالثاً : عندما قلت (تمرير المتحولات ) لم أقصد تمرير المتحولات بواسطة Url Address و إنما بواسطة Server.Transfer و بالتالي لن تظهر المعلومات مثل كلمة المرور , ..............

رابعاً : بخصوص انتهاء الجلسة حتى عند إغلاق المتصفح ... أرجو أن تنظر إلى الكود التالي :

 // From Global.asax.cs
Sub Application_Start(ByVal Sender As Object, ByVal E As EventArgs)
        ' Record application start.
        Application("AppCount") = Application("AppCount") + 1
    End Sub

    Sub Session_Start(ByVal Sender As Object, ByVal E As EventArgs)
        ' Count sessions.
        Application("SessCount") = Application("SessCount") + 1
        ' Display session count.
        Response.Write("Number of applications: " & _
            Application("AppCount") & "<br>")
        ' Display session count.
        Response.Write("Number of sessions: " & _
            Application("SessCount") & "<br>")
    End Sub

    Sub Session_End(ByVal Sender As Object, ByVal E As EventArgs)
        ' Decrement sessions.
        Application("SessCount") = Application("SessCount") - 1
    End Sub

و أظن أن الجميع من قرأ كتاب

Developing Web Application with Microsoft visual basic.net and visual C#.net

يعرف هذا الكود جيداً ........ و لكن السؤال هل أعطى هذا الكود نتائج مستقرة صحيحة بالنسبة لعدد الجلسات من حيث انقاص عداد الجلسات حين يتم إغلاق المتصفح لجلسة ما ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

و يعود الكتاب تحت بند Determining When an Application Ends بأنه يجب تغيير session timeout لنجبر session على الانتهاء (رغم إغلاق المتصفح !!!!!!!!!!!!!!! ) ...............

أرجو أن أكون قد أوضحت وجهة نظري جيداً ...........

#13

افهم من كلامك اخي محمد انه بعد عملية فحص الsession يجب ايضا التأكد من قاعدة البيانات ايضا ؟

وان الحل لهذه المشكلة يمكن في مسألة التأكد

نموت وتحيا ...................فلسطين .

#14

شكرا للأخوين محمد ابو صلاح والأخ اسماعيل على هذا الجهد الطيب

المسألة كلها عملت معي ونجحت المسألة بكالها شكرا لكل من ساعد

.

نموت وتحيا ...................فلسطين .

هذا الموضوع مغلق.

مواضيع مشابهة