• 25-07-2023, 05:10:29
    #1
    Evet dostlar bu kodda görmüş olduğunuz üzere bugün, dün ve toplam şeklinde değerlerin olduğu bir sayacım var. Sadece +1 verdiğim kısımlar 1 çıktısı veriyor ve sayfa yenilediğimde artmıyor. Cepten ve farklı cihazlardan girsem de değişen bir şey yok... Yardımcı olursanız çok sevinirim.

    <?php 
    // Session adı
    $session_adi = 'ziyaretci';
    
    // Bugünkü ziyaretçi sayısı
    if (isset($_SESSION[$session_adi . '_bugunku'])) {
        $bugunku_ziyaretci = intval($_SESSION[$session_adi . '_bugunku']);
    } else {
        $bugunku_ziyaretci = 0;
    }
    
    // Dünkü ziyaretçi sayısı
    if (isset($_SESSION[$session_adi . '_dunku'])) {
        $dunku_ziyaretci = intval($_SESSION[$session_adi . '_dunku']);
    } else {
        $dunku_ziyaretci = 0;
    }
    
    // Toplam ziyaretçi sayısı
    if (isset($_SESSION[$session_adi . '_toplam'])) {
        $toplam_ziyaretci = intval($_SESSION[$session_adi . '_toplam']);
    } else {
        $toplam_ziyaretci = 0;
    }
    
    // Ziyaretçi verilerini güncelle
    $_SESSION[$session_adi . '_bugunku'] = $bugunku_ziyaretci + 1;
    $_SESSION[$session_adi . '_dunku'] = $bugunku_ziyaretci;
    $_SESSION[$session_adi . '_toplam'] = $toplam_ziyaretci + 1;
    
    echo "Bugünkü ziyaretçi sayısı: " . ($bugunku_ziyaretci + 1) . "<br>";
    echo "Dünkü ziyaretçi sayısı: " . $dunku_ziyaretci . "<br>";
    echo "Toplam ziyaretçi sayısı: " . ($toplam_ziyaretci + 1);
    ?>
  • 25-07-2023, 05:14:12
    #2
    Çalışmaması normal çünkü tüm kullanıcılarının verisini değil sadece siteye giren o kullanıcının verisini işliyorsunuz. $_SESSION ve $_COOKIE 1 kullanıcıya özeldir başka kişiler başkalarının verisini göremez.
    • Onur89TR
    • umutyildiz
    Onur89TR ve umutyildiz bunu beğendi.
    2 kişi bunu beğendi.
  • 25-07-2023, 06:19:07
    #3
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Çalışmaması normal çünkü tüm kullanıcılarının verisini değil sadece siteye giren o kullanıcının verisini işliyorsunuz. $_SESSION ve $_COOKIE 1 kullanıcıya özeldir başka kişiler başkalarının verisini göremez.
    Yanıt için teşekkürler. Peki ne gibi bir yol izlemeli? Yeni kod nasıl olmalı?
  • 25-07-2023, 07:00:47
    #4
    Bunun yerine Google Analytics/Yandex Metrica vb. analiz servislerinden birinin API'ını kullanmanız daha sağlıklı sonuçlar verecektir. Sıfırdan kendiniz yazmak isterseniz server kısmında kullanıcı IP'sini loglayarak ilerlersiniz ya da önerim olarak client-side çalışıp kullanıcıya cookie atarsınız doğrulamaları cookie'ye göre yaparsınız isterseniz de ikisini yaparsınız seçim size kalmış. Mesela kullanıcı siteye girdiğinde veritabanına IP ile beraber kaydedersiniz ve kullanıcı her sayfayı gezdiğinde sorgulama yapmanız gerekir bu da maliyetli bir işlem olur, bunun yerine doğrulamayı cookie üzerinden yapın cookie set edilmemişse sayacı artırıp set etsin edilmişse de null return etsin.

    Cookie set etme konusuna örnek olarak alttaki cevabı inceleyebilirsiniz, veritabanına post etme kısmını siz halledersiniz.
    https://stackoverflow.com/a/38860887
  • 25-07-2023, 07:06:02
    #5
    ahmetkucukonder adlı üyeden alıntı: mesajı görüntüle
    Bunun yerine Google Analytics/Yandex Metrica vb. analiz servislerinden birinin API'ını kullanmanız daha sağlıklı sonuçlar verecektir. Sıfırdan kendiniz yazmak isterseniz server kısmında kullanıcı IP'sini loglayarak ilerlersiniz ya da önerim olarak client-side çalışıp kullanıcıya cookie atarsınız doğrulamaları cookie'ye göre yaparsınız isterseniz de ikisini yaparsınız seçim size kalmış. Mesela kullanıcı siteye girdiğinde veritabanına IP ile beraber kaydedersiniz ve kullanıcı her sayfayı gezdiğinde sorgulama yapmanız gerekir bu da maliyetli bir işlem olur, bunun yerine doğrulamayı cookie üzerinden yapın cookie set edilmemişse sayacı artırıp set etsin edilmişse de null return etsin.

    Cookie set etme konusuna örnek olarak alttaki cevabı inceleyebilirsiniz, veritabanına post etme kısmını siz halledersiniz.
    https://stackoverflow.com/a/38860887
    Yanıt için teşekkürler. Ancak konuma ilk gelen yanıt yani COOKIE ve SESSION değerlerinin yalnızca 1 kullanıcının görecek olması beni COOKIE'den uzaklaştırdı. json dosyasına db olmadan nasıl yapılır onu araştırıyorum. Ve yeni yanıtları bekliyorum
  • 25-07-2023, 07:24:06
    #6
    Onur89TR adlı üyeden alıntı: mesajı görüntüle
    Yanıt için teşekkürler. Ancak konuma ilk gelen yanıt yani COOKIE ve SESSION değerlerinin yalnızca 1 kullanıcının görecek olması beni COOKIE'den uzaklaştırdı. json dosyasına db olmadan nasıl yapılır onu araştırıyorum. Ve yeni yanıtları bekliyorum
    Evet cookie ve session kullanıcıların tarayıcılarına özeldir bu yüzden veritabanına ihtiyacınız olacak, session id'yi doğrulama olarak kullanmanızı önermem çünkü değişkendir bu yüzden kullanıcının tarayıcısına cookie atmanız daha faydalı olacaktır. Bu da %100 kesin bir doğrulama yöntemi değil, kullanıcı cookie'yi silebilir ya da benzeri işlevi otomatik yapan yazılım kullanıyor olabilir ancak basit bir sistem için fazlasıyla yeterli

    Cookie'yi sayaçtan ziyade doğrulama olarak kullanacaksınız, kullanıcının daha önce girdiğini tespit etmelisiniz ki her sayfa gezdiğinde sayaç artmasın yani her sayfa yenilenmesine değil de kullanıcı başına +1 yapmış olursunuz bunu da en rahat cookie ile yapabilirsiniz. Bir defa atıp sonra okuyacaksınız, eğer bulamazsa dbde sayacı +1 yapıp cookie atacak bulursa da dbye veri göndermeyecek.

    Verileri kaydetme işini JSON ile yapmak istiyorsanız php-jsondb kütüphanesi işinizi fazlasıyla kolaylaştıracaktır, kullanımı oldukça basit.
    https://github.com/donjajo/php-jsondb

    Attığım cookie kodlarını kendinize göre düzenleyip tarihi post edin, zaman aralıklarına göre veri alırken ihtiyacınız olacak.
    Kütüphaneyi kullanmadan önce şu örneğe göz atabilirsiniz.
    https://github.com/donjajo/php-jsond.../WhereTest.php
  • 25-07-2023, 07:27:41
    #7
    Hocam bu konuda o kadar bilgim olsa zaten sormam. Bana tek dosyalık çözüm lazım. İlk mesajımda yazdığım gibi.