Sayfayı kapatınca çıkış yaptırmak.
Herkese iyi akşamlar.Arkadaşlar ben online üyeleri sayabilmek için kullanıcılar tablosuna online diye bir alan ekledim.Giriş yapınca 1 oluyor böylece online kişileri saydırıyorum çıkış yapınca 0 olarak kaydediliyor.Ama üyeler çıkışa basmadan sayfayı kapatınca 0 olarak kaydedilmiyo hep online görünüyo onu nasıl çözebilirim?Sayfayı kapatınca veritabanda değişiklik yaptırabilir miyim ?
Php
Sayfa kapandığında veritabanında direk değişiklik yapamazsın.
Bunu yapabilmen için sürekli bir tarama yapman lazım.Bir fonksiyon içerisinde kullanıcı için kullanıcılar tablosuna insert yaparken aynı zamanda silme işleminide yapacaksın. Bunu yapabilmen için girdiği anda ki tarih-saati karşılaştırma yapabilmek için veritabanında tutman lazım.
$timeout_suresi = 60;
$zaman = time();
$timeout = $zaman -$timeout_suresi;
$insert = mysql_query("INSERT INTO kullanıcılar (zaman,ip,file) VALUES ('$zaman','$ip')");
$delete = mysql_query("DELETE FROM kullanıcılar WHERE zaman<$timeout");
Bu şekilde insert işlemi ile birlikte aynı anda tablolarda timeout süresi dolanları bir delete sorgusuyla silerek temizleyebilirsin.
Php
teşekkür ederim cevabınız için ama time out süresi dolanlar derken ne demek istediniz anlayamadım.herkese bir sitede kalma süresi mi belirlemiş olucam yoksa siteden çıkışa basarak veya çarpıya basarak çıkış anını timeout olarak mı belirlemiş olucam ?
Php
Kullanıcı sayfalar arasında dolaştığı sürece veritabanına kaydediyor. 60 saniye boyunca hiçbir hareket yapmazsa siteden çıkmış kabul ediliyor.
Php
yazmayı unutmuşum. birçok forum arkadaşın önerdiği mantığı kullanır.
Alternatif olarak <body onUnload=""> kısmına yazılacak bir ajax sorgusu ile veritabanında online=0 olarak kaydedilebilir. tabii kullanıcı aynı anda birçok sayfa açmışsa bu mantık çöker.
Php
anladım çok teşekkür ederim