Konu görüntüleme sayısında çoklu gösterimleri engelleme
Konu görüntüleme fonksiyonum vardı. Burada 10 saat süren cookie oluşturarak çoklu konu gösterimlerin önüne geçtim. ama bu şekilde yapınca da cookie sabit kalıyor. id olarak konunun id'sini çektiği için başka kullanıcılarda konuyu görüntülere saymıyor. Konu görüntüleme olayında multi görüntülemelerin önüne nasıl geçeriz.
Yardımcı olursanız sevinim. teşekkürler şimdiden.
if(!@$_COOKIE["hit".$post_id]){
//Sayfa yenilemelerinde multi sayımları yapmaması için cookie kullanıldı.
update_post_meta( $post_id, $key, $count );
setcookie("hit".$post_id,"_",time()+36000);
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
function HitEkleme($id, $table, $sutun){
global $db;
if(!isset($_COOKIE['hit-' . $id])){
$update = $db->prepare("UPDATE $table SET okunma=:g WHERE id=:id");
$update->execute(array(':g' => $sutun+1,':id' => $id));
setcookie('hit-' . $id,"1",time()+3600, '/');
// print_r($_COOKIE);
}
}
// kullanımı
$id = getten gelen id
$table = güncelleme yapacağın tablo
$sutun = getten listenen verinin sutun adı
ben okunma diye sutun oluşturuyorum
sende kendine göre ayarlarsın.
$userkey = str_replace('.','',$_SERVER['REMOTE_ADDR']);
if(!@$_COOKIE["hit".$post_id.$userkey]){
//Sayfa yenilemelerinde multi sayımları yapmaması için cookie kullanıldı.
update_post_meta( $post_id, $key, $count );
setcookie("hit".$post_id.$userkey,"_",time()+86400);
}
Teşekkür ederim hocam. Deneyeceğim. Böyle bir şey yaptım ama telefondan girince saymadı. Benim yaptığımda yanlış bir şey var mı acaba
cookie oldum olası sevmemısımdır hıcte kullanmadım SESSION ILE YAPSAN mysql e kaydetsen sonra 2 3 gunde bır mysql den sılsen olmazmı
kullandıgım kod bu ıstersen kendıne gore ayarla
if(isset($_GET['yblog'])){
$hit_id=$row_blog['b_id'];
if (empty($_SESSION["hit_{$hit_id}"]) or ($_SESSION["hit_{$hit_id}"]<time())) { // ONCE SESSIONLA BAKIYORUM OKUMUSMU ADAM BU YAZIYI
$_SESSION["hit_{$hit_id}"] = time()+86400; // KILIT NOKTA BURASI EĞER ADAM OKUMADIYSA BU BLOGU SESSIONA 86400 SANIYE / 24 SAAT EKLIYORUM
// BURADA 2. ESAS KONTROLU YAPIYORUM EGER 24 SAAT ICINDE 2. ZIYARETI ISE ALLTAKI KOD DEVREYE GIRIYOR
$bbak=$ans->prepare("SELECT * FROM hit WHERE h_deger=? AND h_tarih >= NOW() - INTERVAL 1 day AND h_ip=?");
$bbak->execute([$row_blog['b_id'],GetIP()]);
$say_bbak=$bbak->rowCount();
if($say_bbak==0){ // EĞER SESSION DEVREDEN CIKARSA BU KOD KONTROLU YAPIYOR SAYFAYI YENILESEDE IZIN VERMIYOR :)
$byaz=$ans->prepare("INSERT INTO hit (h_tip, h_deger, h_ip) VALUES (?,?,?)");
$byaz->execute([$btip,$row_blog['b_id'],GetIP()]);
$bhit=$ans->prepare("UPDATE blog SET b_hit=b_hit +1 WHERE b_id=?");
$bhit->execute([$row_blog['b_id']]);
}
}
}