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?
<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>
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,
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?
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
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