Bu anlatımda ziyaretçi bilgileriniz json formatta bir dosyada saklanacaktır. Veritabanında tutmayarak gereksiz bir bilgi yığınından kurtulacak ve txt dosyasında saklamayarakta biraz performans arttırmış olacağız. Bunun için iki ayrı fonksiyon yazdık.
İlk fonksiyonumuzu sadece ziyaretçilerimin ziyaret ettiği dosyalara veya header gibi her sayfada çağrılan bir dosyaya ekleyebilirsiniz.
function ziyaretci() {
if(!file_exists('assets/ziyaretci.txt')) {
touch('assets/ziyaretci.json');
}
$dizi['ziyaretciler'][0] = array(
"ip" => gercekip(),
"tarih" => date('d.m.Y'),
//"sayfa" => $_SERVER['REQUEST_URI']
);
$oku = file_get_contents('assets/ziyaretci.json');
if ($oku == '') {
$dosya = fopen('assets/ziyaretci.json', 'w');
fwrite($dosya, json_encode($dizi));
fclose($dosya);
}else{
$decode = json_decode($oku, true);
array_push($decode['ziyaretciler'], array(
"ip" => gercekip(),
"tarih" => date('d.m.Y'),
//"sayfa" => $_SERVER['REQUEST_URI']
));
$encode = json_encode($decode);
file_put_contents("assets/ziyaretci.json", $encode, LOCK_EX);
}
}
Fonksiyonu çalıştırmak için ziyaretci(); yazmanız yeterli.
Json dosyasına depoladığımız ip ve tarih bilgilerinin detaylarını yönetim panelinde gösterebilmek için ikinci bir fonksiyona daha ihtiyacımız var.
function ziyaretcigoster($deger) {
$json = file_get_contents('assets/ziyaretci.json');
if ($deger == 'bugün') {
$json = json_decode($json,true);
$i = 0;
foreach ($json['ziyaretciler'] as $j) {
if (date('d.m.Y',strtotime($j['tarih'])) == date('d.m.Y')) {
$i++;
}
}
return $i;
}
if ($deger == 'bugüntekil') {
$json = json_decode($json,true);
$i = 0;
$tekilyap = array_unique($json);
foreach ($json['ziyaretciler'] as $j) {
if (date('d.m.Y',strtotime($j['tarih'])) == date('d.m.Y')) {
$arr[] = $j['ip'];
}
}
$unique_data = array_unique($arr);
return count($unique_data);
}
if ($deger == 'dün') {
$json = json_decode($json,true);
$i = 0;
foreach ($json['ziyaretciler'] as $j) {
if (date('d.m.Y',strtotime($j['tarih'])) == date('d.m.Y',strtotime('yesterday'))) {
$i++;
}
}
return $i;
}
if ($deger == 'düntekil') {
$json = json_decode($json,true);
foreach ($json['ziyaretciler'] as $j) {
if (date('d.m.Y',strtotime($j['tarih'])) == date('d.m.Y',strtotime('yesterday'))) {
$arr[] = $j['ip'];
}
}
$unique_data = array_unique($arr);
return count($unique_data);
}
if ($deger == 'hafta') {
$json = json_decode($json,true);
$i = 0;
foreach ($json['ziyaretciler'] as $j) {
if (date('Y',strtotime($j['tarih'])) == date('Y') and date('W',strtotime($j['tarih'])) == date('W')) {
$i++;
}
}
return $i;
}
if ($deger == 'haftatekil') {
$json = json_decode($json,true);
$i = 0;
foreach ($json['ziyaretciler'] as $j) {
if (date('Y',strtotime($j['tarih'])) == date('Y') and date('W',strtotime($j['tarih'])) == date('W')) {
$arr[] = $j['ip'];
}
}
$unique_data = array_unique($arr);
return count($unique_data);
}
if ($deger == 'ay') {
$json = json_decode($json,true);
$i = 0;
foreach ($json['ziyaretciler'] as $j) {
if (date('m.Y',strtotime($j['tarih'])) == date('m.Y')) {
$i++;
}
}
return $i;
}
if ($deger == 'aytekil') {
$json = json_decode($json,true);
$i = 0;
foreach ($json['ziyaretciler'] as $j) {
if (date('m.Y',strtotime($j['tarih'])) == date('m.Y')) {
$arr[] = $j['ip'];
}
}
$unique_data = array_unique($arr);
return count($unique_data);
}
if ($deger == 'yıl') {
$json = json_decode($json,true);
$i = 0;
foreach ($json['ziyaretciler'] as $j) {
if (date('Y',strtotime($j['tarih'])) == date('Y')) {
$i++;
}
}
return $i;
}
if ($deger == 'yıltekil') {
$json = json_decode($json,true);
$i = 0;
foreach ($json['ziyaretciler'] as $j) {
if (date('Y',strtotime($j['tarih'])) == date('Y')) {
$arr[] = $j['ip'];
}
}
$unique_data = array_unique($arr);
return count($unique_data);
}
if ($deger == 'genel') {
$json = json_decode($json,true);
$i = 0;
foreach ($json['ziyaretciler'] as $j) {
$i++;
}
return $i;
}
if ($deger == 'geneltekil') {
$json = json_decode($json,true);
$i = 0;
foreach ($json['ziyaretciler'] as $j) {
$arr[] = $j['ip'];
}
$unique_data = array_unique($arr);
return count($unique_data);
}
}
Ziyaretçilerin gerçek ip adresini bulmaya zorladığımız bir fonksiyonumuz var;
function gercekip() {
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'];
} return $ip;
}
Ziyaretçi istatistiklerinin gösterimi
Bugün ki ziyaretcileri almak için ziyaretcigoster('bugün');
Bugün ki tekil ziyaretcileri almak için ziyaretcigoster('bugüntekil');
Dün ki ziyaretcileri almak için ziyaretcigoster('dün');
Dün ki tekil ziyaretcileri almak için ziyaretcigoster('düntekil');
Bu hafta ki ziyaretcileri almak için ziyaretcigoster('hafta');
Bu hafta ki tekil ziyaretcileri almak için ziyaretcigoster('haftatekil');
Bu ay ki ziyaretcileri almak için ziyaretcigoster('ay');
Bu ay ki tekil ziyaretcileri almak için ziyaretcigoster('aytekil');
Bu yıl ki ziyaretcileri almak için ziyaretcigoster('yıl');
Bu yıl ki tekil ziyaretcileri almak için ziyaretcigoster('yıltekil');
Genel ziyaretci toplamını almak için ziyaretcigoster('genel');
Genel tekil ziyaretci toplamını almak için ziyaretcigoster('geneltekil');