PHP İle Aktif Ziyaretçi Bilgileri ve Sayacı

PHP İle Aktif Ziyaretçi Bilgileri ve Sayacı

  • 16,264 Kez Okundu
  • PHP & MySQL
  • 16 Yorum
  • 2015-12-27 01:45:05

Fazla söze gerek duymadan kısaca özetleyip kodları paylaşmak isterim.

Sitenize giren ziyaretçinin bilgilerini yani bunlar ;

  1. - Gerçek IP ,
  2. - Maskeli IP,
  3. - Aktif Ziyaretçi Sayısı,
  4. - Dün Tekil Toplam Sayısı ,
  5. - Bugün Tekil Toplam Sayısı,
  6. - Toplam Tekil Sayısı  ,
  7. - Kullanılan Tarayıcı,
  8. - İşletim Sistemi

gibi bilgilere erişim sağlayacağımız bir kaç fonksiyonu da paylaşmış olacağım umarım işinize yarar.

Öncelikle veritabanı kodlarımıza göz atalım

// Online Tablosu İçin
CREATE TABLE `online` (
	`ip` VARCHAR(50) NOT NULL,
	`time` VARCHAR(50) NOT NULL,
	`OS` VARCHAR(75) NOT NULL,
	`browser` VARCHAR(255) NOT NULL ,
	`useragent` VARCHAR(255) NOT NULL 
	
)
COLLATE='utf8_turkish_ci'
ENGINE=MyISAM
;

// Ziyaret Tablosu İçin

CREATE TABLE `ziyaret` (
	`id` INT(50) NOT NULL AUTO_INCREMENT,
	`ip` VARCHAR(75) NOT NULL,
	`tarih` VARCHAR(20) NOT NULL,
	`sondk` VARCHAR(20) NOT NULL,
	`OS` VARCHAR(75) NOT NULL,
	`browser` VARCHAR(255) NOT NULL,
	`useragent` VARCHAR(255) NOT NULL,
	PRIMARY KEY (`id`)
)
COLLATE='utf8_turkish_ci'
ENGINE=MyISAM
AUTO_INCREMENT=1
;

Şimdi ise Tarayıcımızı tespit edeceğimiz fonksiyonumuz,

function browser_al($useragent = '') 
{ 
        if ($useragent == '')  
        {  
                $useragent = $_SERVER['HTTP_USER_AGENT'];  
        } 
        $browser_name = ''; 
        $browsers = array(); 
         
        $browsers[] = array('name' => 'AmigaVoyager', 'useragent' => 'AmigaVoyager'); 
        $browsers[] = array('name' => 'Apple Generic', 'useragent' => 'CFNetwork');                              
        $browsers[] = array('name' => 'Camino', 'useragent' => 'Camino'); 
        $browsers[] = array('name' => 'Ensemble2', 'useragent' => 'Ensemble2'); 
        $browsers[] = array('name' => 'Epiphany', 'useragent' => 'Epiphany'); 
        $browsers[] = array('name' => 'Firefox', 'useragent' => 'Firefox');   
        $browsers[] = array('name' => 'Firefox', 'useragent' => 'Firefox/1.0'); 
        $browsers[] = array('name' => 'Firefox', 'useragent' => 'Firefox/1.5'); 
        $browsers[] = array('name' => 'Firefox', 'useragent' => 'BonEcho'); 
        $browsers[] = array('name' => 'Firefox', 'useragent' => 'Firefox/2'); 
        $browsers[] = array('name' => 'Firefox', 'useragent' => 'Firefox/3'); 
        $browsers[] = array('name' => 'Firefox', 'useragent' => 'GranParadiso'); 
        $browsers[] = array('name' => 'Firefox', 'useragent' => 'Phoenix'); 
        $browsers[] = array('name' => 'Firefox', 'useragent' => 'Firebird'); 
        $browsers[] = array('name' => 'Galeon', 'useragent' => 'Galeon'); 
        $browsers[] = array('name' => 'Google Chrome', 'useragent' => 'chrome'); 
		$browsers[] = array('name' => 'Google Chrome', 'useragent' => 'Chrome'); 
        $browsers[] = array('name' => 'iCab', 'useragent' => 'iCab'); 
        $browsers[] = array('name' => 'Iceweasel', 'useragent' => 'Iceweasel'); 
        $browsers[] = array('name' => 'Internet Explorer', 'useragent' => 'MSIE');   
        $browsers[] = array('name' => 'Internet Explorer', 'useragent' => 'MSIE5.'); 
        $browsers[] = array('name' => 'Internet Explorer', 'useragent' => 'MSIE6.'); 
        $browsers[] = array('name' => 'Internet Explorer', 'useragent' => 'MSIE7.'); 
        $browsers[] = array('name' => 'Internet Explorer', 'useragent' => 'MSIE8.'); 
		$browsers[] = array('name' => 'Internet Explorer', 'useragent' => 'MSIE9.'); 
		$browsers[] = array('name' => 'Internet Explorer', 'useragent' => 'MSIE10.');
		$browsers[] = array('name' => 'Internet Explorer', 'useragent' => 'MSIE11.'); 	
		$browsers[] = array('name' => 'Internet Explorer', 'useragent' => 'MSIE.');	
		$browsers[] = array('name' => 'Internet Explorer Mobile', 'useragent' => 'IEMobile.');		
        $browsers[] = array('name' => 'K-Meleon', 'useragent' => 'K-Meleon'); 
        $browsers[] = array('name' => 'Konqueror', 'useragent' => 'Konqueror'); 
        $browsers[] = array('name' => 'Lynx', 'useragent' => 'Lynx'); 
        $browsers[] = array('name' => 'Mozilla Minefield', 'useragent' => 'Minefield'); 
        $browsers[] = array('name' => 'Netscape', 'useragent' => 'Netscape'); 
        $browsers[] = array('name' => 'NewsCopier', 'useragent' => 'NewsCopier'); 
        $browsers[] = array('name' => 'Opera', 'useragent' => 'Opera'); 
        $browsers[] = array('name' => 'Pocket Internet Explorer', 'useragent' => 'MicrosoftPocketInternetExplorer'); 
        $browsers[] = array('name' => 'Pocket Internet Explorer', 'useragent' => 'MSPIE'); 
        $browsers[] = array('name' => 'Radianrss', 'useragent' => 'radianrss'); 
        $browsers[] = array('name' => 'RssReader', 'useragent' => 'rssreader.com'); 
        $browsers[] = array('name' => 'Apple Safari', 'useragent' => 'AppleSyndication'); 
		$browsers[] = array('name' => 'Mobile Safari', 'useragent' => 'Mobile Safari'); 
        $browsers[] = array('name' => 'SeaMonkey', 'useragent' => 'SeaMonkey'); 
        $browsers[] = array('name' => 'Swiftweasel', 'useragent' => 'Swiftweasel'); 
        $browsers[] = array('name' => 'Thunderbird', 'useragent' => 'Thunderbird'); 
        $browsers[] = array('name' => 'Vienna', 'useragent' => 'Vienna'); 
         
        foreach ($browsers as $browser) 
        { 
                if (stripos(strtolower($useragent), strtolower($browser['useragent'])) !== FALSE) 
                { 
                        $browser_name = $browser['name']; 
                } 
        } 
        unset($browsers, $browser, $useragent); 
         
        if ($browser_name) 
        { 
                return $browser_name; 
        } 
        else 
        { 
                return false; 
        }   
} 

Hemen sonrasında İşletim Sistemimizi tespit edeceğimiz fonksiyonumuz,

function os_al($useragent1 = '') 
{ 
        if ($useragent1 == '')  
        {  
                $useragent1 = $_SERVER['HTTP_USER_AGENT'];  
        } 
        $os_name = ''; 
        $oses = array(); 
         
        $oses[] = array('name' => 'Windows 95', 'useragent1' => 'Windows 95'); 
        $oses[] = array('name' => 'Windows 98', 'useragent1' => 'Windows 98');
        $oses[] = array('name' => 'Windows NT', 'useragent1' => 'Windows NT');		
        $oses[] = array('name' => 'Windows 2000', 'useragent1' => 'Windows NT 5.0'); 
        $oses[] = array('name' => 'Windows XP', 'useragent1' => 'Windows NT 5.1'); 
        $oses[] = array('name' => 'Windows Vista', 'useragent1' => 'Windows NT 6.0'); 
        $oses[] = array('name' => 'Windows 7', 'useragent1' => 'Windows NT 6.1');   
        $oses[] = array('name' => 'Windows 8', 'useragent1' => 'Windows NT 6.2'); 
        $oses[] = array('name' => 'Windows 8.1', 'useragent1' => 'Windows NT 6.3'); 
        $oses[] = array('name' => 'Windows Phone ', 'useragent1' => 'Windows Phone 8.0'); 
        $oses[] = array('name' => 'Symbian ', 'useragent1' => 'SymbOS'); 		
        $oses[] = array('name' => '”Mac”', 'useragent1' => '”Mac”'); 
        $oses[] = array('name' => '”Linux”', 'useragent1' => '”Linux”'); 
		$oses[] = array('name' => 'Android', 'useragent1' => 'Android'); 
		$oses[] = array('name' => 'Mac OS X', 'useragent1' => 'iPhone');    
		$oses[] = array('name' => 'Mac OS X', 'useragent1' => 'Mac OS X');	

		
        foreach ($oses as $os) 
        { 
                if (stripos(strtolower($useragent1), strtolower($os['useragent1'])) !== FALSE) 
                { 
                        $os_name = $os['name']; 
                } 
        } 
        unset($oses, $os, $useragent1); 
         
        if ($os_name) 
        { 
                return $os_name; 
        } 
        else 
        { 
                return false; 
        }   
} 

Sırada ise kullanıcının Gerçek IP sini tespit etmeye geldi benim kullandığım fonksiyon aşağıda , ama buradaki fonksiyonları da kullanabilirsiniz.

function GetIP(){
if (!empty ($_SERVER['HTTP_CLIENT_IP']))
{
$ipp = $_SERVER['HTTP_CLIENT_IP'];
}

else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ipp = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else if (!empty($_SERVER['REMOTE_ADDR']))
{
$ipp = $_SERVER['REMOTE_ADDR'];
}
 return $ipp;
}

Şimdi de Maskeli IP bulalım,

echo 'Maskeli IP :'.$_SERVER['REMOTE_ADDR'];

Fonksiyonları kolay kullanabilmemiz için değişkenlere atadım

$tarayıcı=	browser_al(); 

$os = os_al();

$ip = GetIP(); 

Fonksiyon kısmını hallettikten sonra sitemizde Aktif Kişi Sayısını bulalım,

@$past = time()-150; 
mysql_query("DELETE FROM online WHERE time < $past"); 
@$result = mysql_query("SELECT time FROM online WHERE ip='$ip'"); 
@$time = time(); 
if($row = mysql_fetch_array($result)){ 
mysql_query("UPDATE online SET time='$time',ip='$ip' WHERE ip='$ip'");
}else{ 
mysql_query("INSERT INTO online (ip,time,browser,OS,useragent) VALUES ('$ip','$time','$tarayıcı','$os','$genel')") or die(mysql_error()); 
} 
@$result   = mysql_query("SELECT ip FROM online"); 
@$aktifkac = mysql_num_rows($result);
echo 'Aktif Kişi Sayısı : '  .$aktifkac. '<br />';

Dünkü Ziyaretçi Sayısını bulalım şimdide,

@$baslat  =date(Y."-".m."-".d);
@$year    =substr($baslat, 0,4);
@$month   =substr($baslat, 5, 2);
@$day     =substr($baslat, 8, 2);
@$bitis   =date("Y-m-d", mktime(0, 0, 0, $month, $day-1, $year));
@$sorgula = mysql_query("select tarih from ziyaret where tarih='$bitis'");	
@$dunku = mysql_num_rows($sorgula);
echo 'Dünkü Ziyaretçi Sayısı : '.$dunku.'<br />;

Bugünkü Ziyaretçi Sayısını bulalım,

@$bugun = date("Y-m-d");
@$sorgu = mysql_query("select tarih from ziyaret where tarih='$bugun'");
@$bugunku = mysql_num_rows($sorgu);
echo 'Bugünkü Ziyaretçi Sayısı : '.$bugunku.'<br />;

Şimdi de Toplam Tekil Ziyaretçi Sayısını bulalım,

@$ipsi  = GetIP(); 
@$tarih = date("Y-m-d ");

@$genel = $_SERVER['HTTP_USER_AGENT'];
@$tarayıcı=	browser_al(); 
@$os = os_al();
@$sondk = date("H:i:s");
mysql_query("UPDATE ziyaret SET sondk='$sondk' WHERE tarih='$bugun' and ip='$ipsi'");

@$ipkontrol = mysql_query("select * from ziyaret where ip='$ipsi' order by id desc");
@$yaz   = mysql_fetch_assoc($ipkontrol);
@$vip   = $yaz['ip'];
@$vos	= $yaz['OS'];
@$vtarayıcı =$yaz['browser'];
@$vgenel	=$yaz['useragent'];
@$vtarih= $yaz['tarih'];
@$vsondk= $yaz['sondk'];
@$bak = mysql_num_rows($ipkontrol);
if($bak>0){  //if-
    if($vtarih<$tarih){
    $kayit_1 = mysql_query("insert into ziyaret (ip,OS,browser,useragent,tarih,sondk) values ('$ipsi','$os','$tarayıcı','$genel','$tarih','$sondk')"); 
    } 
}
else{
@$kayit_2 = mysql_query("insert into ziyaret (ip,OS,browser,useragent,tarih,sondk) values ('$ipsi','$os','$tarayıcı','$genel','$tarih','$sondk')"); 
}
@$toplamne = mysql_query("select * from ziyaret");
@$toplamziyaret  = mysql_num_rows($toplamne);
echo 'Toplam Tekil Ziyaretçi Sayısı : '.$toplamziyaret.'<br />;
echo 'Maskeli IP :'.$_SERVER['REMOTE_ADDR'];

echo 'Gerçek IP :'. GetIP(); 

echo 'Kullanılan Tarayıcı :'.browser_al(); 

echo 'İşletim Sistemi :'.os_al();


Evet arkadaşlarbir şeyi belirmek istiyorum bazı değişkenler tanımları farklılık gösterebilir , çünkü bir çok projede kullandığım fonksiyonları toplama yaptım umarım sorunsuz çalışır.

Güzel Projelerde Kullanabilmeniz Dileğiyle. Sevgiyle Kalın...

PSyCho24
@PSyCho24 demiş ki ;

güzel paylaşım olmuş birde video eklersen tadından yenmez .

admin
@admin demiş ki ;

Video eklemeyi bende isterim ama ne yazık ki video için ayıracak vaktim olmuyor.

Batuhan
@Batuhan demiş ki ;

Heyo hocam neredesiniz iyimisinz? 

admin
@admin demiş ki ;

Buradayım Batuhan kaybettin mi sandın beni ;)

Ömer KARAÇAY
@Ömer KARAÇAY demiş ki ;

Güzel Güzel Ömer KARAÇAY

admin
@admin demiş ki ;

Teşekkürler Ömer Karaçay 

ALİ Gök
@ALİ Gök demiş ki ;

Acaba rica etsem bu kodların nasıl kullanıldğını anlatır mısın? Php de yeniyim de

admin
@admin demiş ki ;

En kolayından şöyle söyleyeyim en altta bulunan echo ları istediğin yerde kullanabilirsin, örnek olarak bu sitenin en altındaki istatistikler bölümü gibi yapabilirsin 

ekrem
@ekrem demiş ki ;

Merhaba script hali varsa ara yüze eklenecekler admin paneline eklenecekler gibi paylaşırmısınız.

şenol
@şenol demiş ki ;

güzel bir çalışma fakat  tekil kişi sayısını anlayamadım ne demek

Haluk
@Haluk demiş ki ;

Eline Sağlık, Anlatım ve paylaşım için teşekkürler.

TurkMvc
@TurkMvc demiş ki ;

İyi günler CW selamlar PDO çevirmen mümkünmü Kodlamayı ?

admin
@admin demiş ki ;

@TurkMvc aslında çevirmeme gerek yok mantığı basit olduğundan sizde çevirebilirsiniz, Sorun yaşarsanız yardımcı olmaya çalışırım.

gokhan
@gokhan demiş ki ;

Fatal error: Cannot redeclare browser_al() (previously declared in /home/*******/public_html/xxxxxx/includes/ziyaret.php:7) in /home/xxxxx/public_html/xxxxxxx/includes/ziyaret.php on line 280

Böyle bir hata alıyorum sebebi nedir.

 

Site adresimin yazdığı /home/ sonra gelen kısmı**** mısınız? teşekkür ederim

Mssdizayn
@Mssdizayn demiş ki ;

Merhaba hocam paylaşımıznız çok güzel ancak gelişi güzel olmuş, biraz daha detaylı anlatsaydınız hangi kod hangi uzantının içine yerleşicek zaten bu kodları yazabilseydik burdan aramaya kalkmazdık siz en iyi bir video çekin :) sevabınız yerini bulmuş olur

MssDizayn
@MssDizayn demiş ki ;

Bu arada bunu video oalrak çeken bir Allahın kulu yok 

YORUM YAPMAK İSTER MİSİN?

    Sponsor Reklamlar
    Son Yorumlar
    Etiket Bulutu
    C#PopupFormOtomatikProgramBaşlatmaBaşlangıçBasitEkran Koruyucuc#ekran görüntüsümail göndermeexedllbirleştirmekIL MergePhpMSSQL BAĞLANTIGerçekIPRealTextBinaryConvertÇalışmaSüreHesaplamakBulmakCssjQueryHtmlScroll TopYukarı ÇıkOnMinimizeControlBoxSimge DurumunaKüçültInternetGetConnectedStateİnternetBağlantıKontrolŞifre MatikPassword GeneratorHash ŞifrelemeMD5SHA1SHA256SHA384SHA512Asimetrik ŞifrelemeRSASimetrik ŞifrelemeKriptoŞifrelemeAlgoritmaDESRC2RijndaelTripleDESKeyLogKlavye DinleTuş YakalamaGlobal HookDialogResultÇıkış MesajıUyarı MesajıFormClosingMySQLConnector/NetKullanımSoruCheckBoxListViewÇoklu SilmebiosdramexploitkontrolgüvenlikinteljavascriptrowhammerscriptPHPAdmin PanelResponsiveXtbadminFreeÜcretsizWifiWirelessKeysŞifreAnahtarPasswordKablosuz AğDepolamaŞifreler NeredeKablosuz ŞifreAndroidTelefonNasılYazılırProgramlama DiliHesap MakinesiSEONedirNasıl YapılırAnalizGoogleLinkÖzgünMobilKonuResim Robots.txtSite MapŞifreli GirişŞifreli FormŞifre KoymaŞifreli AçılışCompilingDebuggingDerlemeKarma ModMixed ModeApp.ConfigKurbanBayramMübarek OlsunBlogScriptYonetimAdminPanelText EditorMSHTMLEditorYazıDüzenleyiciEasyAppKolayUygulamaÇalıştırmaAkıllı TelefonKlavyeiOSKeyboardEl YazısıCalculatorMyScriptHand WritingDosya YöneticisiFile ExplorerFTPBluetoothRootTask ManagerGörev YöneticisiSystemTargetWeb Application PentestErrorShowHideHataGösterGizlePDOSelectInsertUpdateDeleteConnectSeçimEklemeSilmeGüncellemeMsSQLVeritabanıÇeviriçiDatabaseConverterDbConvertMaskeli IPGerçek IPTarayıcı Tespitİşletim Sistemi TespitTekil Ziyaretçi BilgileriAktif Ziyaretçi BilgileriZiyaretçi SayacıVirüsTemizlemeFirewallServiceSecurityServiceTimeServicePentestGüvenliksızma TestiuniscanwindowslinuxperlDosyaKlasörListelemekFileFolderListInternetDownloadUploadSpeedMonitorServisMsconfigStartupRunServiceIOSMatematikDenklemÇözümKameraKablosuzinternetHotspotPaylaşımAyarlarKaliLinuxSharedTerminalÖsymDuyuruTimeTimeZoneDateZamanTarihdate()time()FreelancerSerbestÇalışanJobsİşlerWebSiteVersionSürümGeçişUbuntuSunucuApachephpinfo()phpversion()FonksiyonHerseyiKopyalacopyallcopySızma TestiSQLMapWindowsPython810HotSpotWi-FiWlannetshhostednetworkAutoWlanJsGeri SayımTextAreaOtomatik KayıtSayacSaniyeCountDownXtbadminV2AjaxJavaScriptNumaraFormatPhoneNumberFormatTelefonNumarasıDebuggerDetectUnpackerDisassemblerSecurityReverseEngineeringAlgorithmMacDKHOSCTFCapture The FlagForensicTriviaIntelligenceCRC32CRYPTPASSWORD_HASHWin10StoreMağazaMicrosoftReInstallWSLPowerShellPOSTCyberSiberAdli BilişimHackerUSBCDLiveToolsBruterNmapMSSQL ServerMS SQL ExpressMS AccessOracleIBM DB2SybaseInterbaseInformixExceldBase DbfVisual FoxProMySQLConnectionŞifreleri BulCMDLaZagneEthernetTuxCutNetCutNetKillPerformansCronTabCronJobRestartStopStartBashShellWireSharkFlagUSOMBTKBase64QRÇözümlerWriteUpWrite-UpFinalReconOSINTToolScannerWebsiteSiber GüvenlikPhishingVPNWannacryMobileDeviceFunctionMobil AlgılaMobil TespitisMobilephp mobilJavascriptYazı EfektKayan YazıText EffectsearchBoxinputclassplaceholdersetIntervalsetTimeoutJSpreventBackwindowpushStatehistoryonloadblock browser back buttonVPN Nediranonimtorucuz ürünucuzurunum.commarket kıyaslaürün kıyaslakıyaslakarşılaştıra101şokhappy centermigroscarrefoursabizim marketkıyasürün fiyatıfiyat kıyaslaucuz fiyatfiyat sorVideoEmbedPlayerVideoIDgetVideoIDIframeCreditCardCard DetectKart AlgılaKart TespitKredi Kartı TespitVisaMastercardAIOpenAIChatGPTYapay Zekaquickchatkrispbeatovencleanvoicepodcastleflairillustrokepatternedstockimgcopymonkeyocoyaunbouncevidyotrymaverickquickchatpuzzlelabssounddrawcleanupresumewordedlookatheresanaiforthatsynthesiadescriptotterinkforall