v2.5.2
Giriş yap

Konu görüntüleme sayısında çoklu gösterimleri engelleme

webman
494 defa görüntülendi

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);
    }
Cevap yaz
Cevaplar (3)
aydinkeskin
1227 gün önce
	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.

webman
1227 gün önce
    $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

qplot
1228 gün önce

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']]);

	}	
}
}