Şimdi Ara

PHP Çevrimiçi çevrimdışı uygulamasi mantigi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
14
Cevap
2
Favori
2.327
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba,
    Bazı sitelerde kisinin cevrimici olup olmadigi gosteriliyor bunun mantigi nedir ?
    Diyelim ki kullanici acikken her 15 saniyede 1 veri tabanindaki durumu 1 yapsin peki kullanici siteden ciktiginda bunu kim 0 a cevircek ?

    < Bu ileti mobil sürüm kullanılarak atıldı >



  • UPP
  • js ve ajax kullanılıyor bildiğim kadarıyla
  • samsung95 S kullanıcısına yanıt
    Jquery javascript ile yapılabilir.
  • Veritabanında bir tabloda online olanlar eklenir. Cookie session gibi parametrelere göre. Belirli süre aralıklarında bu tablo güncellenir. Güncelleme işlevini de jQuery ajax ile yapabilirsiniz. Süre için de interval araştırın.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Ajax değil de Nodejs olabilir mi?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Siteye kullanıcı adı ve şifre yazarak giriş yaptıgınızda eğer kull.adı ve şifre dogruysa o kullanıcıya ait çevrimiçi kolonunu 1 olarak güncelle.
    Siteye girdiğinizde eğer çevrimiçi kolonunu 1'e eşitse çevrimiçi yazılır.Çıkış yap butonuna bastığınızda session kaydı silinir ve veri tabanındaki
    çevrimiçi kolonu 0 olarak güncenllenir.
    Sql bilerek yapılır pek ajax'a gerek yok.Ajax sadece sayfanın hızlanmasında ve görsellik katılmasında etkilidir.Ajax'la yapılmazda demiyorm tabiki:D
  • Yapay Zeka’dan İlgili Konular
    Chrome Kelime Kaydetme Eklentisi
    4 yıl önce açıldı
    Web Siteye Widget Ekleme
    3 yıl önce açıldı
    Daha Fazla Göster
  • yahu zaman denilen bir kavram var. 15 saniyede bir neden 1 giresin ki databasee? o anki zamani gir. check ederken de 15 saniye ve oncekisi online goster 15 saniyeden sonrasini da offline. cok basit mantik.
  • Az kullanicili sistemlerde databasede tutmak bir nebze mantikli olabilir. Lakin cache de tutmak bence daha mantikli.

    cache de authenticatedusers diye bi liste tutarsin. Birisi login olunca login handlerden login olan adami cacheye eklersin cacheyi guncellersin logout olunca da handlerden yakalayip cacheden silersin.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: KazuYA18

    Siteye kullanıcı adı ve şifre yazarak giriş yaptıgınızda eğer kull.adı ve şifre dogruysa o kullanıcıya ait çevrimiçi kolonunu 1 olarak güncelle.
    Siteye girdiğinizde eğer çevrimiçi kolonunu 1'e eşitse çevrimiçi yazılır.Çıkış yap butonuna bastığınızda session kaydı silinir ve veri tabanındaki
    çevrimiçi kolonu 0 olarak güncenllenir.
    Sql bilerek yapılır pek ajax'a gerek yok.Ajax sadece sayfanın hızlanmasında ve görsellik katılmasında etkilidir.Ajax'la yapılmazda demiyorm tabiki:D

    Çıkış yap butonuna basmazsa ne yapacan ???

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • ertanunver'in dediği gibi her 15 saniyede veritabanına şuanki zamanı kaydedersin.
    Online olup olmadığını kontrol etmek içinde şuanki zamandan veritanında kayıtlı olan zamanı çıkartırsın sonuç 15'den büyükse offline olarak gösterirsin.
  • arkadaşlar zaten bahsetimiş konudan ancak bende katkıda bulunmak istedim.
    15 saniyede bir zaman güncelle demiş arkadaşlar. ancak onlara sorarım eğer sitede 1000 (bin) kullanıcı online ise ne olacak ?
    sizce bu mantıklımıdır? aynı anda veritabanına 1000 (bin) update yapacak. kusura bakmayın ama çok dar dşünüyorsunuz.


    Arkadaşım birçok örnek verilmiş. ancak senin izleyeceğin yol şudur.

    öncelikle msql de tablo oluştur.

    durum adında
    tablo adı : durum

    id
    kullanıcıid
    durum
    zaman
    zamanbitis

    Uye girişi yapılan kodlara şu şekilde yapı ekleyeceksin. elbette bunlarında kontrollerini sağlayacaksın.

    üye girişi tamam ise şu işlemleri yap dediğin kısma

    sql sorgusu ile öncelikle kullanıcı bilgierini çekeceksin.

    $sql = mysql_query("SELECT * FROM uyeler WHERE id = '".$_SESSION[''kullanici'']."'");

    sonra bu nu while döngüsüne aktaracaksın.

    while($slq1 = mysql_fetch_assoc($sql));
    daha sonra giren üyenin id değerini çekeceksin.
    $userid = $sql1['id'];
    bu şekilde giren üyenin id bilgisini almış olduk

    daha sonra oluşturmuş olduğumuz tabloyu kontrol altna alacaz.

    yani şe şekilde düşün bu tabloya biz bilgi kaydedecez. ancak bir üyenin sadece 1 kaydı olacak. eğer fazla olursa vay sql in haline :)

    bunun için üyenin id değerini user tablosundan alıp durum tablosunda bu id değerinin olup olmadığına bakıyoruz. ve bunu sayısal değere atıyoruz numeretik yani.


    $sql2 = mysql_query("SELECT * FROM durum WHERE userid = '".$sql1['id']."'");
    $varmi = mysql_num_rows($sql2);


    bundan sonra yapacağımız işlemler basit. numeretik değeri 1 ise aynı kullanıcı var demek biz ozaman update komutunu kullanıp var olan kısımları güncelleyeceğiz.

    Ancak burada dikat etmemiz gerekn birşey var. biz eğer kaliteli birşey istiyorsak zaman kontrolü sağlayıp aradaki farkı alacağız. ve bu farkı sitede göstereceğiz.

    bunun içinde ayrı kodlar yazılması lazım. biz şimdilik normal durum güncellemesi yapalım.


    if ($varmi == "1"){

    $zaman = date("d.m.Y");
    $update = "UPDATE durum set durum = '1' , zaman = '".$zaman."' WHERE userid = '".$userid."'";
    mysql_query($update);

    }else {
    $zaman = date("d.m.Y");
    $insert = "INSERT INTO durum (id,durum,zaman) VALUES('null','1','".$zaman."')";
    $result = mysql_query($insert);

    }


    ve bu dosya ile işimiz bitti. sitende

    $sql2 = mysql_query("SELECT * FROM durum WHERE userid = '".$_SESSION['kullanici']."'");
    $varmi = mysql_num_rows($sql2);

    if ($varmi == "1"){

    echo 'Çevirimiçi'
    }else {
    echo çevirimdışı'
    }

    Şeklinde kullanırsın.

    şimdi gelelim çıkışyap.php sayfasına

    burada şöyle yapacaksın



    $zaman = date("d.m.Y");
    $update = "UPDATE durum set durum = '0' , zamanbitis = '".$zaman."' WHERE userid = '".$_SESSİON['kullanici']."'";
    mysql_query($update);

    ancak bu kodu unset komutlarından önce çalıştırman lazım. yoksa işlem yapmaz. yani kodların en üstüne koyacaksın. önce update yapacak sonra çıkış yapacak.


    benden bukadar geliştirmek size kalmış


    İyi çalışmalar.




  • $sql2 = mysql_query("SELECT * FROM durum WHERE userid = '".$_SESSION['kullanici']."'");
    $varmi = mysql_num_rows($sql2);

    if ($varmi == "1"){

    echo 'Çevirimiçi'
    }else {
    echo çevirimdışı'
    }


    bu kısımda hata yapmışım. bu kod ile kendi durumumuzu görebiliriz :)

    Şöyle yapacağız örneğin kişileri listeliyoruz. ya da kişiye ait rofil sayfasında bilgilerini yayınlıyoruz. fom siteleri gibi düşünün

    bilgileri çektiğimiz sql sorgusundan o kullanıcının id değerini alacağız. user tablosundan elbette
    bu bir profil sayfası ise siteadi.com/kullanici.php?id=13 şeklinde bir yapı olmalıdır. bunun için

    kullanici.php sayfasında get değeri ile gelen id değerini alacağız.



    $userid1 = $_GET['id'];
    $sql = mysql_query("SELECT * FROM uyeler WHERE id = '".$userid ."'");
    while($slq1 = mysql_fetch_assoc($sql));

    $userid = $sql1['id'];



    $sql2 = mysql_query("SELECT * FROM durum WHERE userid = '".$userid."'");
    $varmi = mysql_num_rows($sql2);

    if ($varmi == "1"){

    echo 'Çevirimiçi'
    }else {
    echo çevirimdışı'
    }


    bu kod ile artık kişinin durumunu görebiliriz.




  • Php'de mysql_ yerine PDO kullanmanı tavsiye ederim.
    Ayrıntı için:
    http://www.prototurk.com/video/mysql_-vs-pdo/394
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.