Merhaba Webkolog takipçileri, bugün sizlere PHP ve MySQL yapısını kullanarak web sitenizde o an aktif olan üyeleri nasıl pratik bir şekilde tespit edebileceğinizi anlatacağım.
Web projelerimizde kullanıcı etkileşimini artırmanın ve topluluk havasını güçlendirmenin en etkili yollarından biri, kimlerin o an sitede aktif olduğunu gösterebilmektir. Bu mekanizma temelde, kullanıcının yaptığı her sayfa yenilemesinde veritabanındaki son hareket zamanını güncellenmesine ve belirli bir zaman dilimi (örneğin son 5 dakika) içerisinde işlem yapmış kişilerin sorgulanmasına dayanır.
1. Veritabanı Yapısının Hazırlanması
Öncelikle üyeler tablomuzda kullanıcıların son erişim zamanını tutacağımız bir alana ihtiyacımız var. users veya kendi üye tablonuza son_hareket adında bir sütun ekleyerek işe başlayabiliriz.
Aşağıdaki SQL komutu ile gerekli alanı tablonuza dahil edebilirsiniz:
ALTER TABLE uyeler ADD son_hareket DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
2. Kullanıcının Son Hareket Zamanını Güncelleme
Sitenize giriş yapmış her bir üye her sayfa gezdiğinde bu zaman damgasını tazelememiz gerekir. Bunun için oturum (session) kontrolünün yapıldığı ana dosyaya küçük bir SQL güncelleme sorgusu yerleştiriyoruz:
session_start();
if (isset($_SESSION['user_id'])) {
$uye_id = $_SESSION['user_id'];
$guncelle = $db->prepare("UPDATE uyeler SET son_hareket = NOW() WHERE id = ?");
$guncelle->execute([$uye_id]);
}
3. Aktif Üyeleri Listeleme
Şimdi geldi en keyifli kısma! Belirlediğimiz zaman aralığında (mesela son 5 dakikada) hareket göstermiş kullanıcıları veritabanından çekip listeleyeceğiz. NOW() - INTERVAL 5 MINUTE ifadesi ile son 5 dakikayı kolayca filtreleyebiliriz:
$aktif_sure = $db->query("SELECT * FROM uyeler WHERE son_hareket >= NOW() - INTERVAL 5 MINUTE");
$online_uyeler = $aktif_sure->fetchAll(PDO::FETCH_ASSOC);
foreach ($online_uyeler as $uye) {
echo "" . htmlspecialchars($uye['kullanici_adi']) . " şu an çevrim içi!
";
}
Geliştirme İpuçları ve Performans
Veritabanı yükünü hafifletmek adına son_hareket sütunu üzerine bir index eklemek, üye sayınız arttığında sorgunun performanslı çalışmasını sağlar. Ayrıca oturumu kapatan kullanıcılar için zaman damgasını sıfırlayabilir veya doğrudan çıkış işleminde oturumu sonlandırabilirsiniz.
Uygulamayı kendi projelerinize entegre ederken takıldığınız bir nokta olursa yorum kısmından bana yazmaktan çekinmeyin. Yeni rehberlerde ve teknik yazılarda görüşmek üzere.
Hepinize sağlıklı, mutlu ve huzurlu günler dilerim!
Webkolog'u takipte kalın!
Hiç yorum yok:
Yorum Gönder