PHP ile sayfa görüntülenmesi saydırma ve veri tabanına kaydetme
Merhabalar. Bir sayfaya kaç kere girilmişse saydırmak ve veri tabanına yollamak istiyorum.
En basit yolla nasıl yapabilirim?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
Sana bir iki tane örnek yazıyım istediğini alıp kullanabilirsin
Txt Dosyası ile Sayaç Yapımı
Veritabanına gerek olmadan sadece sayac.txt belgesi oluşturarak yapabilirsin.
<?php
$sayac_degeri = file_get_contents('sayac.txt');
$sayac_degeri = $sayac_degeri+1;
file_put_contents('sayac.txt',$sayac_degeri);
echo 'Site Goruntulenme Sayisi: '.$sayac_degeri;
?>
illa veritabanıyla yapmak istiyorum diyorsan cookie ile saydırabilirsin
<?php
/*Cookie ile PHP Sayaç Yapımı*/
if (!$_COOKIE['makale__'.$makale['makale_id']]){
query('UPDATE makaleler SET makale_hit = makale_hit + 1 WHERE makale_id = \''.$makale['makale_id'].'\''); /*makale_hit değerini 1 arttır*/
setcookie('makale__'.$makale['makale_id'], '_', time()+86400);/*1gün boyunca çerez aktif olsun*/
}
?>
İP Adresine göre sayaç yapabilirsin
<?php
function sayac(){
global $db;
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$kontrol = $db->prepare("SELECT * FROM counter");
$kontrol->execute(array());
$tablo_dolumu = $kontrol->rowCount();
if (!$tablo_dolumu) {
$query = $db->prepare("INSERT INTO counter SET
counter_sayac = ?");
$insert = $query->execute(array(
"0"
));
}
$sql = $db->prepare("SELECT * FROM counter_ip");
$sql->execute(array());
$row=$sql->fetch(PDO::FETCH_ASSOC);
if ($row['counterip_ip'] != $ip) {
$query = $db->prepare("INSERT INTO counter_ip SET
counterip_ip = ?");
$insert = $query->execute(array(
$ip
));
$sql = $db->prepare("SELECT * FROM counter WHERE counter_id =?");
$sql->execute(array('1'));
$row=$sql->fetch(PDO::FETCH_ASSOC);
$artir = $row['counter_sayac']+1;
$guncelle = $db->prepare("UPDATE counter SET counter_sayac=? WHERE counter_id = ?");
$guncelle->execute(array(
$artir,'1'));
} else {
$sql = $db->prepare("SELECT * FROM counter WHERE counter_id= ?");
$sql->execute(array(
'1'
));
$row=$sql->fetch(PDO::FETCH_ASSOC);
echo $row['counter_sayac'];
}
}
?>
<?php sayac(); ?>