PHP/MySQL ile online ziyaretcileri listeleme

Yazar
PHP
07 Aralık 2020 Pazartesi

PHP/MySQL ile online ziyaretcileri listeleme

Sitemizdeki online ziyaretçilerileri listelemek için sadece her ziyaretçiye ait session id’ leri veribanımıza kaydetmemiz ve session_id’ lerin istenilen zaman aralığında olup olmadığını kontrol etmmemiz yeterlidir. (örn, 10 dakika)

Önce MySQL “online_ziyaretci” tablosu oluşturalım.


 
  1. CREATE TABLE IF NOT EXISTS `online_ziyaretci` (
  2. `sessionno` varchar(100) NOT NULL,
  3. `zaman` int(40) NOT NULL
  4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

İlk önce kimOnline() işlevimizi oluşturalım. Bu işlev sitemizin ana sayfasında her ziyaretçinin session no’sunu veritabanına yerleştirecek, eğer session no’ su veritabanında mevcutsa güncelleyecektir.


 
  1. // veritabanı bağlantısını yapmayı unutmayın
  2. function kimOnline($sesid){
  3. global $mysqli;
  4. // veritabanına yerleştir veya güncelle
  5. $sql = "INSERT INTO online_ziyaretci (`sessionno`, `zaman`) VALUES('".$sesid."', '".time()."')
  6. ON DUPLICATE KEY UPDATE sessionno='".$sesid."',`zaman`='".time()."'";
  7. $mysqli->query($sql);
  8. // ziyaretci session' i sona erdiyse veritabanından kaldır
  9. KullanicilariKaldir();
  10. }
  11. /*
  12. Bu işlev ziyaretçi session' ının sona erip ermediğini kontrol eder.
  13. Eğer session 15 dakikadan evvelse silinir.
  14. */
  15. function KullanicilariKaldir(){
  16. // veritabanı bağlantısını yapmayı unutmayın
  17. global $mysqli;
  18. $zaman = time() - 900; // 900=15 dakika
  19. $mysqli->query("DELETE FROM online_ziyaretci WHERE zaman < ".$zaman); //
  20. }

 

Kullanımı:

Ana sayfanıza aşağıdaki kodu kopyalamanız yeterlidir.


 
  1. <?PHP
  2. session_start();
  3. // Eğer session id değişmezse session_regenerate_id() php işlevini kullanın. Bu işlev session id'i yenileyecektir.
  4. //session_regenerate_id();
  5. kimOnline(session_id());
  6. ?>

 

Yukarıda ki işlevler ile ziyaretçilerimizi veritabanımıza kaydetdik. Bu kaydedilen verileri site kullanıcılarına veya yönetici sayfamızda listelemek için aşağıdaki gibi bir işlev kullanabiliriz.


 
  1. // Bütün kullanıcıları liste halinde göster
  2. function butunZiyaretcilariListele(){
  3. global $mysqli;
  4. $query ='SELECT * FROM online_ziyaretci ORDER BY zaman DESC';
  5. $results = $mysqli->query($query);
  6. $ret ='';
  7. while($row=$results->fetch_array()){
  8. $ret .= '<div>'.$row['sessionno'].' '.date("d/m/Y H:i:s",$row['zaman']).'</div>';
  9. /*
  10. //Veritabanınızdaki kullanıcıları kontrol için
  11. if (kullaniciOnline($row['kullanici_no'])){
  12. $ret .= '<div class="online"></div>';
  13. } else {
  14. $ret .= '<div class="offline"></div>';
  15. }*/
  16. }
  17. return $ret;
  18. }

 

Kullanımı:

İstediğiniz bir sayfaya aşağıdaki kodu kopyalayın.


 
  1. <?PHP
  2. echo butunZiyaretcilariListele()
  3. ?>

 

Topma 292 Defa Okundu Eklenme Tarihi : 07 Aralık 2020 Pazartesi 00:00
Erkan ÇAĞLAR

Tasarımcı Programcı, Kendi çapında herşey işte .

www.erkancaglar.com.tr
Üste Git