From a41ff8707a70b2ae379fcf2161fc9e4b0c5187d8 Mon Sep 17 00:00:00 2001 From: Muhaimin Muhammad Date: Mon, 4 Feb 2019 23:25:59 +0700 Subject: [PATCH] Init File --- README.md | 11 ++++ admin.php | 37 ++++++++++++ capture/hasil.JPG | Bin 0 -> 56582 bytes config.php | 25 ++++++++ functions.php | 143 ++++++++++++++++++++++++++++++++++++++++++++++ index.php | 53 +++++++++++++++++ statistik_api.sql | 78 +++++++++++++++++++++++++ 7 files changed, 347 insertions(+) create mode 100644 admin.php create mode 100644 capture/hasil.JPG create mode 100644 config.php create mode 100644 functions.php create mode 100644 index.php create mode 100644 statistik_api.sql diff --git a/README.md b/README.md index 4a46c69..7298c11 100644 --- a/README.md +++ b/README.md @@ -1 +1,12 @@ # web-statistik + + +Web Statistik - Merekam Informasi Pengunjung Website + +Program sederhana yang digunakan untuk merekam pengunjung website, kemudian tersimpan pada database. +Informasi yang terekam meliputi IP, Browser, OS, Timezone, Waktu Akses, DLL. + +## Special Thanks + +Program ini menggunakan API dari IP-API + diff --git a/admin.php b/admin.php new file mode 100644 index 0000000..1e71978 --- /dev/null +++ b/admin.php @@ -0,0 +1,37 @@ +query($sql); + +?> +

Daftar user yang pernah mengakses website

+ + + + + + + + + + + + + + fetch_assoc()) { ?> + + + + + + + + + + + + + +
IPBrowserOSISPCountryRegionCityLatitude, LongitudeTimezoneDate
\ No newline at end of file diff --git a/capture/hasil.JPG b/capture/hasil.JPG new file mode 100644 index 0000000000000000000000000000000000000000..797011475ec518d5ab7b1afc31a0ce2ec9d2e32b GIT binary patch literal 56582 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 JK>6>5{{XsseAWN} literal 0 HcmV?d00001 diff --git a/config.php b/config.php new file mode 100644 index 0000000..48f7161 --- /dev/null +++ b/config.php @@ -0,0 +1,25 @@ +connect_error) { + + // Sistem dihentikan + die('Terjadi Kegagalan : '. $db->connect_error ); +} +?> \ No newline at end of file diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..d81965a --- /dev/null +++ b/functions.php @@ -0,0 +1,143 @@ + 'Windows 8', + '/windows nt 6.1/i' => 'Windows 7', + '/windows nt 6.0/i' => 'Windows Vista', + '/windows nt 5.2/i' => 'Windows Server 2003/XP x64', + '/windows nt 5.1/i' => 'Windows XP', + '/windows xp/i' => 'Windows XP', + '/windows nt 5.0/i' => 'Windows 2000', + '/windows me/i' => 'Windows ME', + '/win98/i' => 'Windows 98', + '/win95/i' => 'Windows 95', + '/win16/i' => 'Windows 3.11', + '/macintosh|mac os x/i' => 'Mac OS X', + '/mac_powerpc/i' => 'Mac OS 9', + '/linux/i' => 'Linux', + '/ubuntu/i' => 'Ubuntu', + '/iphone/i' => 'iPhone', + '/ipod/i' => 'iPod', + '/ipad/i' => 'iPad', + '/android/i' => 'Android', + '/blackberry/i' => 'BlackBerry', + '/webos/i' => 'Mobile' + ); + + foreach ($os_array as $regex => $value) { + + if (preg_match($regex, $u_agent)) { + $platform = $value; + break; + } + + } + + // Next get the name of the useragent yes seperately and for good reason + if (preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) { + $bname = 'Internet Explorer'; + $ub = "MSIE"; + + } elseif(preg_match('/Firefox/i',$u_agent)) { + $bname = 'Mozilla Firefox'; + $ub = "Firefox"; + + } elseif(preg_match('/Chrome/i',$u_agent)) { + $bname = 'Google Chrome'; + $ub = "Chrome"; + + } elseif (preg_match('/Safari/i',$u_agent)) { + $bname = 'Apple Safari'; + $ub = "Safari"; + + } elseif (preg_match('/Opera/i',$u_agent)) { + $bname = 'Opera'; + $ub = "Opera"; + + } elseif (preg_match('/Netscape/i',$u_agent)) { + $bname = 'Netscape'; + $ub = "Netscape"; + } + + // finally get the correct version number + $known = array('Version', $ub, 'other'); + $pattern = '#(?' . join('|', $known) .')[/ ]+(?[0-9.|a-zA-Z.]*)#'; + + if (! preg_match_all($pattern, $u_agent, $matches)) { + // we have no matching number just continue + } + + // see how many we have + $i = count($matches['browser']); + if ($i != 1) { + //we will have two since we are not using 'other' argument yet + //see if version is before or after the name + if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){ + $version= $matches['version'][0]; + + } else { + $version= $matches['version'][1]; + } + } else { + $version= $matches['version'][0]; + } + + // check if we have a number + $version = ( $version == null || $version == "" ) ? "?" : $version; + + return array( + 'userAgent' => $u_agent, + 'name' => $bname, + 'version' => $version, + 'platform' => $platform, + 'pattern' => $pattern + ); +} + +/** + * @return name Operating System*/ +function os_user() +{ + $OS = _userAgent(); + return $OS['platform']; +} +?> \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..2c0caf1 --- /dev/null +++ b/index.php @@ -0,0 +1,53 @@ +"; + * echo browser_user(); + * echo "
"; + * echo os_user(); + */ + +// GET data user yang sudah mengakses website kita +$ip = ip_user(); +$browser = browser_user(); +$os = os_user(); + +// USE API TO GET VISITOR DATA +$queryapi=@unserialize(file_get_contents('http://ip-api.com/php/'.$ip)); + + +if($queryapi && $queryapi['status'] == 'success') { + + $isp = $queryapi['isp']; + $country = $queryapi['country']; + $region = $queryapi['regionName']; + $city = $queryapi['city']; + $latitude = $queryapi['lat']; + $longitude = $queryapi['lon']; + $timezone = $queryapi['timezone']; + + // Check bila sebelumnya data pengunjung sudah terekam + if (! isset($_COOKIE['VISITOR'])) { + + // Cookie disimpan selama 24 jam + $duration = time()+60*60*24; + + // simpan kedalam cookie browser + setcookie('VISITOR',$browser,$duration); + + // SQL Command atau perintah SQL INSERT + $sql = "INSERT INTO statistik_api (ip, os, browser, isp, country, region, city, latitude, longitude, timezone) VALUES ('$ip', '$os', '$browser', '$isp', '$country', '$region', '$city', '$latitude', '$longitude', '$timezone')"; + + $query = $db->query($sql); + + } +} + +echo "

Untuk Melihat siapa saja yang telah mengakses website ini, silahkan buka pada Halaman Admin

"; +?> + \ No newline at end of file diff --git a/statistik_api.sql b/statistik_api.sql new file mode 100644 index 0000000..5a4cba2 --- /dev/null +++ b/statistik_api.sql @@ -0,0 +1,78 @@ +-- phpMyAdmin SQL Dump +-- version 4.7.0 +-- https://www.phpmyadmin.net/ +-- +-- Host: 127.0.0.1 +-- Generation Time: Feb 01, 2019 at 04:57 AM +-- Server version: 10.1.25-MariaDB +-- PHP Version: 5.6.31 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Database: `statistik_api` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `statistik_api` +-- + +CREATE TABLE `statistik_api` ( + `id_statistik` int(11) NOT NULL, + `ip` varchar(20) NOT NULL, + `os` varchar(30) NOT NULL, + `browser` varchar(130) NOT NULL, + `isp` varchar(40) NOT NULL, + `country` varchar(40) NOT NULL, + `region` varchar(40) NOT NULL, + `city` varchar(40) NOT NULL, + `latitude` double NOT NULL, + `longitude` double NOT NULL, + `timezone` text NOT NULL, + `date_create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `statistik_api` +-- + +INSERT INTO `statistik_api` (`id_statistik`, `ip`, `os`, `browser`, `isp`, `country`, `region`, `city`, `latitude`, `longitude`, `timezone`, `date_create`) VALUES +(4, '159.253.145.183', 'test', 'test', 'SoftLayer', 'Netherlands', 'North Holland', 'Amsterdam', 52.3556, 4.9135, 'Europe/Amsterdam', '2019-01-30 16:03:54'), +(5, '112.215.36.145', 'Linux', 'Google Chrome v.60.0.3112.116', 'WestHost, Inc.', 'Indonesia', 'Jakarta', 'Rw 01', -6.2262401580811, 106.82499694824, 'Asia/Jakarta', '2019-02-01 03:54:59'), +(6, '23.235.227.109', 'Unknown', 'Mozilla Firefox v.47.0', 'Secured Servers LLC', 'United States', 'Arizona', 'Tempe', 33.421501159668, -111.97399902344, 'America/Phoenix', '2019-02-01 03:56:03'), +(7, '209.95.56.51', 'Unknown', 'Google Chrome v.71.0.3578.98', 'WestHost, Inc.', 'United States', 'Illinois', 'Chicago', 41.878101348877, -87.62979888916, 'America/Chicago', '2019-02-01 03:56:58'); + +-- +-- Indexes for dumped tables +-- + +-- +-- Indexes for table `statistik_api` +-- +ALTER TABLE `statistik_api` + ADD PRIMARY KEY (`id_statistik`); + +-- +-- AUTO_INCREMENT for dumped tables +-- + +-- +-- AUTO_INCREMENT for table `statistik_api` +-- +ALTER TABLE `statistik_api` + MODIFY `id_statistik` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;