برگزیده های پرشین تولز

تعداد بازدیدکنندگان امروز

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
سلام
چطور می تونم تعداد بازدید کننده های امروز رو از طریق ای اس پی کلاسیک مشخص کنم؟
 

amin_lili

کاربر تازه وارد
تاریخ عضویت
24 آپریل 2007
نوشته‌ها
532
لایک‌ها
2
سن
43
محل سکونت
ای کاش آنجا ...

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
سلام
من از این کد استفاده کردم ولی تعداد بازدید کننده ها ی امروز رو همواره 1 نشون می ده ! !!
شما می دونید علتش چیه؟
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,775
لایک‌ها
70
سن
40
محل سکونت
نصف جهان
این کد بازدید کننده های فعلی رو نشون میده .

برای اینکه شما بتونین کار مورد نظرتون رو انجام بدین چند تا راه دارید

یکی اینکه به ازای استارت شدن هر session ، یک واحد به یک شمارنده در شیء application اضافه کنین

اما بهترین راه داشتن یک جدول جدا در دیتابیس است که شما بتونین آمار رو ذخیره کنین و بعدا هم بتونین آمار گیری کنین .
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
ولی این کد تعداد بازدید کننده های فعلی رو هم همواره 1 نشون میده !!!!
من امتحانش کردم ولی درست عمل نمی کنه !!!

برای اینکه بتونم توی دیتا بیس تعداد رو ذخیره کنم باید به جای session به مقدار دیتا بیس یکی اضافه کنم؟
برای جدا کردن اطلاعات هر روز از روز دیگه باید چیکار کنم؟
من سر این کد یه مقدار مشکل دارم میشه بیشتر توضیح بدید
متشکرم
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,775
لایک‌ها
70
سن
40
محل سکونت
نصف جهان
ولی این کد تعداد بازدید کننده های فعلی رو هم همواره 1 نشون میده !!!!
من امتحانش کردم ولی درست عمل نمی کنه !!!

برای اینکه بتونم توی دیتا بیس تعداد رو ذخیره کنم باید به جای session به مقدار دیتا بیس یکی اضافه کنم؟
برای جدا کردن اطلاعات هر روز از روز دیگه باید چیکار کنم؟
من سر این کد یه مقدار مشکل دارم میشه بیشتر توضیح بدید
متشکرم
ببینید

چندین راه برای این مساله وجود دارد . من یکی از آنها ( و نه بهترین ) را برایتان شرح میدهم .

در فایل global.asax ، ابتدا در متد application_start ، یک متغیر در شیء application تعریف کنید که تعداد بازدید کننده های امروز را ذخیره کند

اکنون در متد session_start ، کافی است کدی بنویسید که به آن متغیر در شیء application یک واحد اضافه کند .

اکنون فقط کافی است به محض آغاز شدن روز بعد شما مقدار آن متغیر را در دیتابیس ذخیره کنید ، سپس آن را صفر کنید .
این که آغاز روز بعد را چگونه تشخیص دهیم ، من الان ایده ای ندارم ولی میتوانید مثلا در همان شیء application ، یک متغیر دیگر داشته باشید که تاریخ امروز را ذخیره کند. سپس در session_start ، قبل از افزودن به مقدار شمارنده ، آن تاریخ را با تاریخ فعلی مقایسه کنید . اگر یکی نبودند ، یعنی روز جدید آغاز شده است . التبه راههای بهتری هم مسلما هست که متاسفانه من الان حضور ذهن ندارم .


متاسفانه وقت نوشتن کد را هم ندارم ! باید ببخشید
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
همونطور که ar.shirazi عزیز فرمودن در ابتدا یه شیء Application رو در Application_OnStart ایجاد کن...

Sub Application_OnStart
application("intactiveusernumber") = 0
End Sub

بعد از Session_Onstart هم این کد رو اضافه کن..

Sub Session_OnStart
session.timeout = 20
application.lock
application("intactiveusernumber") = application("intactiveusernumber") + 1
Application.UnLock
End Sub

در session_onend هم ...

Sub Session_OnEnd
Application.Lock
Application("intActiveUserNumber") = Application("intActiveUserNumber") - 1
Application.UnLock
End Sub

حالا تو صفحه ای که میخوای تعداد کاربران رو نمایش بدی اینو اضافه میکنی

<%
Response.Write Application("intActiveUserNumber")
%>

این کد بالائی دققا تعداد افراد رو نشون میده که خودت میتونی متنی رو قبل یا بعد از اون اضافه کنی...
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
ممنونم که وقت گذاشتید ولی 2 تا مشکل وجود داره :
1- تمام کارهایی رو که گفتید انجام دادم ولی متأسفانه چیزی چاپ نشد
HTML:
Imports System.Web
Imports System.Web.SessionState

Public Class Global
    Inherits System.Web.HttpApplication

#Region " Component Designer Generated Code "

    Public Sub New()
        MyBase.New()

        'This call is required by the Component Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call

    End Sub

    'Required by the Component Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Component Designer
    'It can be modified using the Component Designer.
    'Do not modify it using the code editor.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        components = New System.ComponentModel.Container()
    End Sub

#End Region

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when the application is started
        Application("intactiveusernumber") = 0
    End Sub

    Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when the session is started
        Session.Timeout = 20
        Application.Lock()
        Application("intactiveusernumber") = Application("intactiveusernumber") + 1
        Application.UnLock()


    End Sub

    Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires at the beginning of each request
    End Sub

    Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires upon attempting to authenticate the use
    End Sub

    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when an error occurs
    End Sub

    Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when the session ends
        Application.Lock()
        Application("intactiveusernumber") = Application("intactiveusernumber") - 1
        Application.UnLock()

    End Sub

    Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when the application ends
    End Sub

End Class

وقتی هم که خواستم چاپش کنم توی یک فرم دیگه مقدار رو توی یک لیبل ریختم

HTML:
Label7.text=Application("intActiveUserNumber")

البته این خط رو توی قسمت پیج لود نوشتم
ولی موقع اجرا چیزی توی لیبل وجود نداره !!!

2- مشکل جالبتر اینه که :

سلام
چطور می تونم تعداد بازدید کننده های امروز رو از طریق ای اس پی کلاسیک مشخص کنم؟

همونطور که در پست اولم گفته بودم من می خواستم توی ای اس پی کلاسیک این کار رو انجام بدم:)

به این ترتیب مشکلم شد دو تا ;)
اگه لطف کنید راهنمایی کنید ممنون می شم
راستی این کارها رو هم توی دات نت یک انجام دادم
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
دوست عزیز این کد برا ASP کلاسیک هست...
من نمونه اصلی کد رو برات میزارم ، اینو تایپ کردم ممکنه کم و زیاد شده ...
در ضمن این کد اصلی رو که میزارم خودم تو ASP.net 2 پیاده کردم و 100% جواب میده...

Sub Application_OnStart
'Create an ActiveUsersNumber variable with Application scope and set it to 0
Application("intActiveUserNumber") = 0
End Sub


Sub Session_OnStart

Session.Timeout = 20

'The appilcation must be locked so that only one user can increment the Application ActiveUserNumber variable at a time
Application.Lock

'The Application ActiveUserNumber variable is incremented by 1
Application("intActiveUserNumber") = Application("intActiveUserNumber") + 1

'The application is now unlocked
Application.UnLock

End Sub



Sub Session_OnEnd

'The appilcation must be locked so that only one user can decrement the Application ActiveUserNumber variable at a time
Application.Lock

'The Application ActiveUserNumber variable is decremented by 1
Application("intActiveUserNumber") = Application("intActiveUserNumber") - 1

'The application is now unlocked
Application.UnLock

End Sub


و در صفحه هم به این صورت مقدار رو رایت کن ببین حل میشه یا نه...

<%

'Alternative to display text output instead
'Response.Write Application("intActiveUserNumber")

%>

این کدها رو هم اینطور کپی کن، فکرنمیکنم مشکلی پیش بیاد...
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
سلام
از راهنماییها و همینطور حوصله کردنتون بسیار بسیار سپاسگذارم
نه تنها تعداد بازدید کنندهای امروز توی سایتم درست شد بلکه کلی اطلاعات جانبی هم کسب کردم !
ضمنا وبلاگتون رو دیدم و خوندم جالب بود;)
موفق و پیروز باشید
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
راستی 1 سوال خیلی مهم !
Session.Timeout = 20
این فقط برای 20 دقیقه کار میکنه
من برای نمایش تعداد بازدید کننده های هر روز باید مقدار اون رو 1440 دقیقه یعنی 24 ساعت قرار بدم ؟
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
من مقدار session timeout رو 1440 قرار دادم ولی بازم بعد از چند دقیقه تعداد رو از یک شروع می کنه
برای حل این مشکل باید چیکار کرد؟؟؟
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
سلام
تعداد بازدیدکنندگان فعلی درست شد
session timeout رو هم 20 قرار دادم
ولی آخرشم نفهمیدم تعداد بازدیدکنندگان امروز رو چطور باید به دست بیارم;)
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
برا داشتن تعداد بازدیدکنندهای امروز فکر میکنم باید مقدار اون رو دیتابیست ذخیره کنی..
یعنی هر کاربر رو که وارد شد، یکی به اون اضافه کنی همراه تاریخ روزی که وارد شده، بعد گزارش گیری کنی ازش..
البته راه‌های خیلی خیلی!! ساده تری هم حتما هست که فکر کنم دوستان بهتر میتونن کمکتون کنن...
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
متشکرم
ولی ظاهرا کسی نیست:wacko:
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
خوب باید بازدید ها رو ذخیره کنی و بعدش بخونی
حالا تو text یا ,db
 
بالا