كيف اعرض اسماء المستخدمين الحاليين؟
كيف اعرض اسماء المستخدمين الحاليين؟
ما المقصود بالمستخدمين هنا ؟
لا اظن أنهم مستخدمي قاعدة البيانات بما أننا في قسم ال asp.net
أما إذا كنت تتكلم عن مستخدمي الموقع المسجلين لديك ، فهذا يتوقف على قاعدة البيانات لديك ، وتسجيل عملية الدخول للموقع ، فيمكنك عمل حقل في جدول المستخدمين اسمه مثلاً IsActive وعند تسجيل الدخول يتم وضع القيمة 1 مثلاً وعند الخروج يتم وضع القيمة 0 وبعبارة sql بسيطة يمكنك معرفة من هم المتواجدين حالياً وأسمائهم
هذه فكرة بسيطة وبالتأكيد هناك غيرها
الطريقة التى ذكرها أخي محمد هي الطريقة المفضلة، بالنسبة لي
إستخدمي حدث Session_Start وSession_End من اجل تحديث المتسخدمين المتواجدين
وتذكري ان القيمة الافتراضية لل Session هي 20 دقيقة، ويمكن تغيرها من خلال web.config
لا تحزن:
إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.
لا تحزن:
فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.
طيب اذا لم يكونو مسجلين
او لم يكن تسجيل دخول لدي بالموقع
كيف اعرف عدد الزوار الحاليين للموقع؟
abo_alzobaer@hotmail.com
بسيطة جدا ..
في صفحات الموقع قم بإستدعاء دالة وظيفتها إنشاء Session إن لم يكن موجودا للزائر و لتعطه القيمة true or false كالتالي:
private bool IsVisited()
{
if(this.Session["isVisited"]==null)
{
this.Session["isVisited"]=true;
return true;
}
else
{
return false;
}
}
private void Page_Load(object sender, System.EventArgs e)
{
this.IsVisited();
Response.Write(this.Session["isVisited"].ToString());
}ستلاحظ أنه تم إستدعاء الدالة التي أنشأت ال Session أما في حال كون ال Session قم تم إنشاؤه فلن يتم إنشاء Session جديد و في ملف ال Global.asax تقوم بتحديد ال TimeOut او من خلال ال Web.Config
عدد الزوار الحاليين تعرفه من خلال عرض محتوى نسخة ال Application كالتالي :
Response.Write(this.Application["hits"].ToString());
حظا موفقا..
You can fly while you can touch the sky
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
في البداية اقول اشتقت لك اخي الحبيب محمد ابو صلاح
واشتقت لان انهل من علمك ارجو ان يكون العمل الجديد ممتاز ووفقك الله لما يحب ويرضى
وارى ان الاخ الحبيب محمدالنجراوي هنا فاستغل الوضع وا ضع سوألي
يعني الحبايب كلهم هنا
انا كنت احاول اكتب كود لاعلاف المشتركين المتواجدين في الموقع وذلك عن طريق عمل حقل status
واضع فيه القيمة online عندما يعمل المشترك login واعمل تحديث لتصبح offline عندما يعمل logout
لكن المشكلة عندي هي ماذا لولم يقم المشترك بعمل logout واغلق الصفحة مباشرة ستبقى القيمة online
فاقترح علي احد الاخوان جزاه الله خير شفاه الله انا اكتب في session_end الكود التالي
If Session("ID") <> "" Then
Application.Lock()
Dim insert3 As String
insert3 = "update [Users] set [status]='OffLine' where User_Name=N'" & Me.Session("ID") & "' "
Dim cmd3 As New SqlCommand(insert3, cn)
cn.Open()
cmd3.ExecuteNonQuery()
cn.Close()
Application.UnLock()
End Ifلكن المشكلة ان البرنامج لايمر على هذا الكود اصلا ولا يراه ابدا فاين المشكلة وما الحل
ساعدونا بارك الله فيكم
تم تعديل هذه المشاركة بواسطة ابو السموأل في 12 مايو 2005 في 01:46
السلام عليكم ..
أهلا بك أخي أبو السمؤأل ..
أنت أين وضعت الكود السابق؟
أعتقد أن الزائر عندما يغلق المتصفح سوف تنتهي الجلسة و بالتالي يجب أن تركز على الحدث Session_End و لكن لنفرض أن الجلسة فعليا لا تنتهي عند إغلاق المتصفح سوف يسأل أحدهم لماذا إذا عندما نعود لفتح التطبيق نراها قد اختفت ؟
طبعا لأنها مرتبطة بنسخة المتصفح التي استعرضنا منها و كان لها SessionID خاص ..
لذا لا تنسى وضع Session.TimeOut
حقيقة أنا لم أجربها حتى الان و لكن هذا هو تفسيري لها :)
You can fly while you can touch the sky
السلام عليكم ورحمة الله وبركاته
اخي الحبيب ان فعلا واضع الكود في Session_End وقد ذكرت ذلك بس انت لسى مش شارب قهوتك :D
وانا فعلا وضعت Session.TimeOut=1
في Session_start
لكن هناك شغلة لم انتبه عليها قال لي احد الشباب ان انتظر دقيقة بعد اغلاق المتصفح عشان يصير time out
بعدها اشيك على الحقل status وسيكون offline ان شاء الله
فما رايكم دام فضلكم
انا ايضا ساجرب واضع النتيجة
طيب
الله يوفقكم
السلام عليكم
اقتباسلكن هناك شغلة لم انتبه عليها قال لي احد الشباب ان انتظر دقيقة بعد اغلاق المتصفح عشان يصير time outبعدها اشيك على الحقل status وسيكون offline ان شاء الله
يظهر إن الاخ كان نايم وقتها ، أنا ركزت في الكلام ولقيت إنه غير منطقي ، لأن السيشن فعلاً سوف ينتهي ولكن البرنامج سيكون قد انتهى قبله ، فكيف سيتم الكتابة إلى قواعد البيانات ، وطبعاً لا يظن أحد أن نسخة أخرى مفتوحة من البرنامج بواسطة مستخدم آخر في مكان آخر ستقوم بالمهمة
يا ريت تقول للأخ يفوق قبل ما يتكلم :)
أظن أنه هناك حل آخر ، وهو أن نضع نسخة أخرى من الكود المذكور عند حدث إنتهاء البرنامج يعني داخل الـ Application_End
أظن هكذا ممكن يكون حل
وفقك الله للخير
للاسف ما زبطت اخي الحبيب تبقى online
تم تعديل هذه المشاركة بواسطة ابو السموأل في 19 مايو 2005 في 10:42
يا اخوان البرنامج لا يمر على الحدث Application_End هل هذا bug اما ان المشكلة عندي فقط
هل جرب احدكم الكتابة في هذا الحدث واشتغل معو
:(
هذا الموضوع مغلق.