Sayfayı kapatınca çıkış yaptırmak

Ayse_46 ayse Avatar

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 bilmemek ayıp değil bilipte çalıştıramamak ayıp
06-01-2011 22:16

    Php

    yusuef Yusuf Polat Avatar

    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.


    09-01-2011 17:25 Edit:09-01-2011 17:27

      Php

      Ayse_46 ayse Avatar

      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 bilmemek ayıp değil bilipte çalıştıramamak ayıp
      16-01-2011 22:54

        Php

        Kullanıcı sayfalar arasında dolaştığı sürece veritabanına kaydediyor. 60 saniye boyunca hiçbir hareket yapmazsa siteden çıkmış kabul ediliyor.

        Her programcı birgün Php yi tadacaktır
        16-01-2011 23:53

          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.

          Her programcı birgün Php yi tadacaktır
          16-01-2011 23:56

            Php

            Ayse_46 ayse Avatar

            anladım çok teşekkür ederim 

            php bilmemek ayıp değil bilipte çalıştıramamak ayıp
            18-01-2011 17:37

              www.Phpkodlari.com © 2009 Herkes Php öğrenecek
              Web tasarım ve eğitim kaynağınız.