:) yani valla kusura bakma daha güzel nasıl anlatırım diye düşünüyorum ama işin içinden çıkamıyorum. :)
1- veritabanına üyeler tablosuna bir tane enerjisure diye bir satır aç
2- adam üye olduğunda adamın enerjisure satırına $zaman=time(); $zaman değerini ata
3- her sayfaya çektiğin bir sayfa aç mesela zamanlama.php diye
4- bu zamanlama.php sayfasını her sayfaya inculude olacak şekilde yani her sayfada çalışacak şekilde ayarla
5- bu zamanlama.php sayfasının içine
$yenizaman=time();
$eskizaman // bunu veritabanından çek üyenin
if($yenizaman<=($eskizaman+(60*10))){
$enerji+10;
son enerjiyi veritabanına kayıt et
}else{
//burayı boş bırak.
}
1- veritabanına üyeler tablosuna bir tane enerjisure diye bir satır aç
2- adam üye olduğunda adamın enerjisure satırına $zaman=time(); $zaman değerini ata
3- her sayfaya çektiğin bir sayfa aç mesela zamanlama.php diye
4- bu zamanlama.php sayfasını her sayfaya inculude olacak şekilde yani her sayfada çalışacak şekilde ayarla
5- bu zamanlama.php sayfasının içine
$yenizaman=time();
$eskizaman // bunu veritabanından çek üyenin
if($yenizaman<=($eskizaman+(60*10))){
$enerji+10;
son enerjiyi veritabanına kayıt et
}else{
//burayı boş bırak.
}
Hocam elinize sağlık, sayenizde ben de yararlandım. Fakat 5. adımda biraz hata olmuş sanki. Her 10 dakika da, 10 enerji verilecekse, güzel fakat bir sorun var. Ya bu sayfa her dakika değil de 1 saatte bir çalışıyorsa. Yani üye sayısı az, ve kod 1 saat sonra çalıştı. Kişinin normalde 60 enerjisi olması gerekirken 10 enerjisi oluyor.
Onun yerine; $eskizaman olarak son enerji verilme tarihi diyelim. Yani en son ne zaman üyeye enerji verilmiş.
$yenizaman=time();
$eskizaman //Veritabanından gelen değer.
$hesapla = $yenizaman - $eskizaman; // Son enerji verilişinden itibaren geçen süre.
if($hesapla > (60*10)){ //hesapla değeri 10dk dan büyük değil ise direk hiçbirşey yapılmasın.
$enerjiver = floor($hesapla / (10 * 60)); //şimdi hesapla değerini 10dk'ya bölüp onu bir alt sayıya yuvarlıyoruz. Yani sayı 3.4'de olsa 3.9'da olsa 3'e yuvarlanacak. Bu sayede kişi 35 enerji alması gerekirken 40 değil, 30 enerji alacak, yani tam olarak 10 ve 10'un katlarında, kendi payına düşeni alacak.
$enerjiver = $enerjiver * 10; // enerji ver değişkeni kaç 10 dakika geçtiğini gösteriyordu. Her 10 dakikada 10 enerji verdiğimiz için, 10 ile çarpıyoruz.
$enerji = $enerji + $enerjiver; // işte burada verilmesi gereken enerjimizi bulduk. Burada unutulmaması gereken nokta, $yenizaman değerini, veritabanından gelen eskizaman değerine girmek, yoksa kişi şimdi enerji almamış sayılacak ve bu sayede tekrar enerji alabilecektir.
}
Benim mantığım da bu, bu yöntem ile her sayfada bu kodu çağırman gerekmez, kişi tek başına kendisi bile enerjisini alabilir. 1 saat boyunca hiç kimse siteyi açmasa bile kişi 1 saat sonra gelip 60 enerjisini alabilir.
Kodlarda hata var mı yok mu denemedim ama mantık budur. Floor komtunu da anlatmaya çalıştım, anlaşılmayan yerler olursa lütfen belirt.