Global.asa ve login sayısı

Web tabanlı uygulama geliştirme araçları(PHP, ASP vb...) ile ilgili konuları buraya yazabilirsiniz.
Cevapla
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Global.asa ve login sayısı

Mesaj gönderen pentiumkivanc »

Sitede Global.asa şu şekilde. Bununla kullanıcılarıb sayısını alabilmeme rağmen hangi ip lerin online olduğunu göremiyorum. Daha doğrusu görüyorum da. O ip ler siteden çıktığında Application("onl_ipler") den çıkmamış görünüyor. Sitemde kaç kişi onlayn ve bunlar hangi ip ler bunu nasıl görebilirim?

Kod: Tümünü seç

<SCRIPT LANGUAGE=VBScript RUNAT=Server> 
Sub Application_OnStart 
Application("Acilis") = Now
Application("sayac") = 0 
Application("onl_ipler")=""
End Sub 

Sub Session_OnStart 

		senin_ip=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
				if senin_ip="" then
			senin_ip=Request.ServerVariables("REMOTE_ADDR")
		end if	
		if senin_ip="" then
			senin_ip="<bilinmiyor>"
		end if

If Not InStr(Application("onl_ipler"), senin_ip) Then 
Application.Lock 
Application("onl_ipler") = Application("onl_ipler") & senin_ip &":" 
Application.UnLock 
End If 
Application.Lock 
Application("sayac") = Application("sayac") + 1 
Application.UnLock 

End Sub 

Sub Session_OnEnd 
senin_ip=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
				if senin_ip="" then
			senin_ip=Request.ServerVariables("REMOTE_ADDR")
		end if	
		if senin_ip="" then
			senin_ip="<bilinmiyor>"
		end if
If Len(Senin_ip) > 0 Then 
Application.Lock 
Application("onl_ipler") = Replace(Application("onl_ipler"), senin_ip&":", "") 
Application.UnLock 
End If 
Application.Lock 
Application("sayac") = Application("sayac") - 1 
Application.UnLock 
senin_ip=""
End Sub 
</SCRIPT>
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Mesaj gönderen Ancestor »

Kod: Tümünü seç

<SCRIPT LANGUAGE=VBScript RUNAT=Server> 
Sub Application_OnStart 
Application("Acilis") = Now() 
Application("sayac") = 0 
Application("onl_ipler")="" 
End Sub 

Sub Session_OnStart 
senin_ip=Request.ServerVariables("REMOTE_ADDR") 
Application("onl_ipler") = Application("onl_ipler") & senin_ip & ":" 
Application("sayac") = Application("sayac") + 1 
End Sub 

Sub Session_OnEnd 
senin_ip=Request.ServerVariables("REMOTE_ADDR") 
Application("onl_ipler") = Replace(Application("onl_ipler"), senin_ip&":", "") 
Application("sayac") = Application("sayac") - 1 
End Sub 
</SCRIPT>
Bu şekilde sorunsuz çalışması lazım

EDİT: session.timeout=xx , timeout olayınıda eklemen gerek (unutmuşum)
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

bazen adsl kişilerin ip adreslerini proxy gibi gösterdiği için

Kod: Tümünü seç

senin_ip=Request.ServerVariables("HTTP_X_FORWARDED_FOR") 
            if senin_ip="" then 
         senin_ip=Request.ServerVariables("REMOTE_ADDR") 
      end if    
      if senin_ip="" then 
         senin_ip="<bilinmiyor>" 
      end if 
Kodunu kullanmıştım. sadece Request.ServerVariables("REMOTE_ADDR") yeterli değil diye. Çünkü bazen farklı kişiler olmasına rağmen nedense aynı ip yi verebiliyor telekom REMOTE_ADDR,

Kod: Tümünü seç

If Not InStr(Application("onl_ipler"), senin_ip) Then 
şartını eklememin sebebi de aynı ip adresi eğer onl_ipler değişkeninde yoksa listeye eklemesini sağlamaktı (neden aynı ip yi aynı listeye sürekli ekleyeyim ki değilmi? belki vatandaş çıktı timeout olmadan tekrar açtı ..) Peki senin bu iki kodu çıkarmanın sebebi ne?
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Mesaj gönderen Ancestor »

1) Telekom farklı kişiler olmasına rağmen aynı ipyi veriyor demişsin zaten. Düşün iki tane üyen var ve varsayalım bu üyelerin ip adresleri aynı verilmiş. Birisi içeride görünecek diğeri dışarıda mı ?
2) TimeOut olayı sayfada bekleme sürendir. Bu değeri sen yazmazsan genelde 20 dakikadır. Yani üye yada ziyaretçi siteden çıktığı zaman timeout a bakmaz. Session_OnEnd olayındaki kodlar çalışır.
Neden timeout gerekli dersen: Mesela ben bu sitede 10dk işlem yapmazsan beni dışarıda göstermesini istiyorum. İşte bu gibi durumlarda timeout işimize yarıyacaktır..
Umarım anlatabilmişimdir
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

Ancestor ilgine teşekkürler,
Timeout süresi önemli değil aslında her iki scriptin de sonucu aynı timeout 1 de koysam Application("sayac") değeri örneğin 12 görünüyor. (yani online kişi sayısı) ancak online ip ler listesine baktığımızda (Application("onl_ipler")) listelenen ip adresi sayısı bu sayıyla örtüşmeyen sayılar çıkrıyor. örneğin kişi sayısı 12 görünüyor ama listelediği ip adresi sayısı 20-30 tane (bazı ip ler tekerrür şekilde listelenmiş bunun sebebi bahsettiğim telekom olayı) Sonuç itibariyle şu veya bu şekilde kişi sayısı doğru olsa da ip adreslerinin sayısı yanlış çıkıyor. Mantık olarak Benim yazdığım global asa scripti bir çok sitede bahsedilen online ziyaretci sayısını gösteren scriptle aynı, zira benim kafama takılanda bu. Mantık olarak aynı olmasına rağmen görünen değişkenler birbiriyle örtüşmüyor. Global asa konusu kaynaklarda pek sık rastlanan bir konu değil. Bu konuda deneyimli ve tecrübeli arkadaşlar: yardımlarınızı bekliyorum
Cevapla