Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php date_default_timezone_set('Asia/Ho_Chi_Minh'); session_start(); // Bt u phin lm ..
Decoded Output download
<?php
date_default_timezone_set('Asia/Ho_Chi_Minh');
session_start(); // Bt u phin lm vic
// Kim tra xem ngi dng ng nhp cha
if (!isset($_SESSION['username'])) {
header('Location: login.php');
exit();
}
// Lu `username` vo cookie nu cha c
if (!isset($_COOKIE['username'])) {
setcookie('username', $_SESSION['username'], time() + (86400 * 30), "/"); // 86400 giy = 1 ngy
}
// Kt ni ti c s d liu
$servername = "45.252.248.32";
$usernameDB = "tpxwahid_admin";
$passwordDB = "Camzone2023@";
$dbname = "tpxwahid_user_registration";
$conn = new mysqli($servername, $usernameDB, $passwordDB, $dbname);
// Kim tra kt ni
if ($conn->connect_error) {
die("Kt ni tht bi: " . $conn->connect_error);
}
// Ly username t session
$username = $_SESSION['username'];
// To truy vn SQL ly URL v start_record t bng customerdata
$sql = "SELECT url, start_record FROM customerdata WHERE username = '$username'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$url = $row["url"];
$start_record = $row["start_record"];
// Chuyn i URL v start_record t PHP sang JavaScript v hin th
echo "<script>";
echo "const savedURL = '" . $url . "';";
echo "const openurl = '" . $start_record . "';";
echo "</script>";
} else {
echo "<script>";
echo "alert('Lin H Zalo - 0867834822 c kch hot.');";
echo "</script>";
}
$conn->close();
// Kt ni ti c s d liu
$servername = "45.252.248.32";
$usernameDB = "tpxwahid_admin";
$passwordDB = "Camzone2023@";
$dbname = "tpxwahid_user_registration";
$conn = new mysqli($servername, $usernameDB, $passwordDB, $dbname);
// Kim tra kt ni
if ($conn->connect_error) {
die("Kt ni ti c s d liu tht bi: " . $conn->connect_error);
}
// Thm thi gian vo log
$currentTime = date('Y-m-d H:i:s');
$location = 'Hanoi';
$trackingCode = '123456789';
// X l khi ngi dng nhp m PIN
if (isset($_POST['pin'])) {
// Kim tra xem c b kha khng
if ($_SESSION['locked_until'] > time()) {
$remainingTime = $_SESSION['locked_until'] - time();
$message = '<div class="alert alert-danger mt-3" role="alert">Bn nhp sai qu 3 ln. Vui lng nhp li sau ' . $remainingTime . ' giy.</div>';
} else {
$enteredPin = $_POST['pin'];
// Kt ni ti c s d liu
$conn = new mysqli($servername, $usernameDB, $passwordDB, $dbname);
// Kim tra kt ni
if ($conn->connect_error) {
die("Kt ni ti c s d liu tht bi: " . $conn->connect_error);
}
// Ly thng tin username t cookie ng nhp
$usernameFromCookie = $_COOKIE['username'];
// Thc hin truy vn tm kim bn ghi vi m PIN v username khp nhau
$sql = "SELECT * FROM customerdata WHERE PIN = '$enteredPin' AND Username = '$usernameFromCookie'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// M PIN v username t cookie u khp vi bn ghi trong c s d liu, cho php vt qua
$row = $result->fetch_assoc();
$_SESSION['valid_pin'] = $enteredPin;
// Kim tra v lu cookie vi m PIN hp l
if (isset($_COOKIE['saved_pin'])) {
unset($_COOKIE['saved_pin']);
setcookie('saved_pin', null, -1, '/');
}
setcookie('saved_pin', $enteredPin, time() + (86400 * 30), "/"); // 86400 giy = 1 ngy
// Kim tra v to bng log nu cha tn ti
$createTableSql = "CREATE TABLE IF NOT EXISTS $tableName (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
start_time DATETIME,
end_time DATETIME,
location VARCHAR(255),
tracking_code VARCHAR(255)
)";
if ($conn->query($createTableSql) === TRUE) {
// Bng log c to hoc tn ti
// Reset s ln th sai v thi gian kha khi nhp ng
$_SESSION['failed_attempts'] = 0;
$_SESSION['locked_until'] = 0;
} else {
// Li khi to bng log
$message = '<div class="alert alert-danger mt-3" role="alert">Li khi to bng log: ' . $conn->error . '</div>';
}
} else {
// M PIN hoc username khng khp hoc khng tm thy
$_SESSION['failed_attempts']++;
if ($_SESSION['failed_attempts'] >= 3) {
// Tnh ton thi gian kha
$lockTime = 60 * pow(2, $_SESSION['failed_attempts'] - 3); // 60s * 2^(s ln sai - 3)
$lockTime = min($lockTime, 180); // Ti a 3 pht (180 giy)
$_SESSION['locked_until'] = time() + $lockTime;
$message = '<div class="alert alert-danger mt-3" role="alert">Bn nhp sai qu 3 ln. Vui lng nhp li sau ' . $lockTime . ' giy.</div>';
} else {
$message = '<div class="alert alert-danger mt-3" role="alert">M PIN hoc thng tin ng nhp khng ng.</div>';
}
}
// ng kt ni
$conn->close();
}
}
// S dng hng s cho tn cookie
define('COOKIE_PIN', 'saved_pin');
$logFilePath = null;
$message = null;
$matchingLines = null;
// Kt ni ti c s d liu
$servername = "45.252.248.32";
$usernameDB = "tpxwahid_admin";
$passwordDB = "Camzone2023@";
$dbname = "tpxwahid_customer_db";
$conn = new mysqli($servername, $usernameDB, $passwordDB, $dbname);
// Kim tra kt ni
if ($conn->connect_error) {
die("Kt ni tht bi: " . $conn->connect_error);
}
// To tn bng log tng ng vi username
$tableName = "log_" . $usernameFromCookie;
// Kim tra xem c m PIN hp l trong session hoc cookie
if (isset($_SESSION['valid_pin']) || isset($_COOKIE['COOKIE_PIN'])) {
$savedPin = isset($_SESSION['valid_pin']) ? $_SESSION['valid_pin'] : $_COOKIE['COOKIE_PIN'];
$usernameFromCookie = $_COOKIE['username']; // Ly username t cookie
$url = $customerData[$savedPin]['url'];
// X l tm kim khi c m PIN hp l v c truy vn
if (isset($_GET['q'])) {
$searchQuery = htmlspecialchars($_GET['q'], ENT_QUOTES, 'UTF-8');
$searchQuery = str_replace('-', '/', $searchQuery);
$searchQuery = trim($searchQuery);
$isDateQuery = preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $searchQuery);
$isCodeQuery = (strlen($searchQuery) >= 5);
if ($isDateQuery || $isCodeQuery) {
$tableName = 'log_' . $usernameFromCookie;
$query = "SELECT * FROM $tableName WHERE 1=1";
if ($isDateQuery) {
$date = DateTime::createFromFormat('d/m/Y', $searchQuery)->format('Y-m-d');
$query .= " AND DATE(`start_time`) = '$date'";
}
if ($isCodeQuery) {
$query .= " AND `tracking_code` LIKE '%$searchQuery%'";
}
$result = $conn->query($query);
if ($result) {
$matchingLines = [];
while ($row = $result->fetch_assoc()) {
// nh dng li thi gian hin th
$formattedStartTime = DateTime::createFromFormat('Y-m-d H:i:s', $row['start_time'])->format('d/m/Y H:i:s');
$formattedEndTime = $row['end_time'] ? DateTime::createFromFormat('Y-m-d H:i:s', $row['end_time'])->format('d/m/Y H:i:s') : 'N/A';
$row['start_time'] = $formattedStartTime;
$row['end_time'] = $formattedEndTime;
$matchingLines[] = $row;
}
// PHN TRANG
$itemsPerPage = 100;
$currentPage = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1; // m bo trang hin ti lun >= 1
$startIndex = ($currentPage - 1) * $itemsPerPage;
$totalResults = count($matchingLines);
$totalPages = ceil($totalResults / $itemsPerPage); // Tnh tng s trang
$matchingLines = array_slice($matchingLines, $startIndex, $itemsPerPage);
} else {
$message = '<div class="alert alert-danger mt-3" role="alert">Khng th c d liu t c s d liu. Vui lng kim tra li.</div>';
}
} else {
$message = '<div class="alert alert-info mt-3" role="alert">Truy vn khng hp l. Vui lng nhp m vn n (ti thiu 5 k t).</div>';
}
}
}
// Kim tra xem c yu cu ti xung khng
if (isset($_GET['download']) && $_GET['download'] == 1 && isset($matchingLines)) {
$txtContent = "STT Thi gian Start Thi gian Kt thc Bn ng M Vn n
";
$stt = 1;
// Lc ton b kt qu, khng ch trang hin ti
$query = "SELECT * FROM log_$usernameFromCookie WHERE 1=1";
if ($isDateQuery) {
$date = DateTime::createFromFormat('d/m/Y', $searchQuery)->format('Y-m-d');
$query .= " AND DATE(`start_time`) = '$date'";
}
if ($isCodeQuery) {
$query .= " AND `tracking_code` LIKE '%$searchQuery%'";
}
$result = $conn->query($query);
if ($result) {
while ($row = $result->fetch_assoc()) {
// nh dng li thi gian hin th
$formattedStartTime = DateTime::createFromFormat('Y-m-d H:i:s', $row['start_time'])->format('d/m/Y H:i:s');
$formattedEndTime = $row['end_time'] ? DateTime::createFromFormat('Y-m-d H:i:s', $row['end_time'])->format('d/m/Y H:i:s') : 'N/A';
$txtContent .= $stt++ . " ";
$txtContent .= $formattedStartTime . " "; // Hin th thi gian bt u nh dng
$txtContent .= $formattedEndTime . " "; // Hin th thi gian kt thc nh dng
$txtContent .= $row['location'] . " ";
$txtContent .= $row['tracking_code'] . "
";
}
}
header('Content-Type: text/plain');
header('Content-Disposition: attachment;filename="ket_qua_tim_kiem.txt"');
echo $txtContent;
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Tra cu n Hng</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="html5-qrcode.min.js"></script>
<audio id="beep-sound" src="beep2.mp3" preload="auto"></audio>
<style>
html {
touch-action: manipulation;
}
body {
font-family: sans-serif;
background-color: #f4f4f4;
}
.container {
background-color: #fff;
padding: 20px;
border-radius: 10px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
h1 {
text-align: center;
margin-bottom: 20px;
color: #333;
}
.form-control {
border-radius: 5px;
}
.btn-primary {
background-color: #007bff;
border: none;
border-radius: 5px;
}
.table {
margin-top: 20px;
}
.table th,
.table td {
vertical-align: middle;
text-align: center;
}
/* Ti u cho mobile */
@media (max-width: 768px) {
.container {
padding: 10px;
}
h1 {
font-size: 1.6rem;
}
.table {
font-size: 0.8rem;
}
.btn-primary {
display: block;
width: 100%;
padding: 5px 15px;
}
}
/* Highlight kt qu tm kim */
.highlight {
background-color: yellow;
}
#reader {
width: 50%;
max-width: 200px;
margin: auto;
display: none;
}
#result, #message {
margin-top: 20px;
font-size: 18px;
font-weight: bold;
}
#result {
color: green;
}
#message {
color: red;
}
#start-button {
display: block;
padding: 10px 30px; /* Reduced height padding */
font-size: 20px;
font-weight: bold;
color: white;
background-color: #FF2400; /* Red */
border: none;
border-radius: 8px; /* Rounded corners */
text-align: center;
cursor: pointer;
outline: none;
margin: 20px auto; /* Center the button */
}
h1 {
margin-top: 20px; /* t margin-top l 20px */
font-size: 24px; /* t kch thc ch l 24px, bn c th iu chnh gi tr ny ty */
}
footer {
position: fixed;
bottom: 0;
width: 100%;
text-align: center;
background-color: black;
}
footer img {
max-width: 100%;
height: auto;
}
@media (max-width: 767px) {
body {
font-size: 14px;
}
.container {
padding: 10px;
}
footer img {
content: url('footer-mobile.jpg');
}
}
</style>
</head>
<body>
<div class="container">
<a href="customer_management.php" class="btn btn-info">Thng tin ti khon</a>
<h1>CamSight by Camzone.vn</h1>
<?php if (!isset($_SESSION['valid_pin'])): ?>
<form method="POST" class="form">
<input type="text" name="pin" class="form-control mb-3" placeholder="Nhp m PIN">
<button type="submit" class="btn btn-primary">Truy cp</button>
</form>
<?php if (isset($message)): ?>
<div class="message-container">
<?php
if ($_SESSION['locked_until'] > time()) {
$remainingTime = $_SESSION['locked_until'] - time();
echo '<div class="alert alert-danger mt-3" role="alert">Bn nhp sai qu 3 ln. <span id="countdown"></span></div>';
?>
<script>
// JavaScript m ngc thi gian
var remainingTime = <?php echo $remainingTime; ?>;
var countdownElement = document.getElementById("countdown");
var countdownInterval = setInterval(function() {
if (remainingTime <= 0) {
clearInterval(countdownInterval);
countdownElement.innerHTML = "Vui lng nhp li.";
localStorage.removeItem('locked_until'); // Xa khi localStorage khi ht thi gian
} else {
countdownElement.innerHTML = "Vui lng nhp li sau " + remainingTime + " giy.";
remainingTime--;
}
}, 1000); // Cp nht mi giy
</script>
<?php
} else {
echo $message;
}
?>
</div>
<?php endif; ?>
<?php else: ?>
<button id="start-button">Scan</button>
<div id="reader" style="display: none;"></div>
<div id="result"></div>
<div id="message"></div>
<script>
const startButton = document.getElementById('start-button');
let html5QrcodeScanner;
function startScanning() {
let reader = document.getElementById('reader');
reader.style.display = 'block';
let beepSound = document.getElementById('beep-sound');
beepSound.play().catch(e => {
console.error('Error playing sound:', e);
});
function onScanSuccess(decodedText, decodedResult) {
beepSound.play();
document.getElementById('result').innerText = `M QR: ${decodedText}`;
// Chn gi tr mi vo URL
// Chn gi tr mi vo URL
const fullURL = savedURL + encodeURIComponent(decodedText);
// M tab mi vi URL xy dng
const newTab = window.open(fullURL, '_blank');
if (newTab) {
let closeAttempts = 0;
const maxAttempts = 20; // 20 ln th (2 giy nu mi ln cch nhau 100ms)
const closeTab = () => {
try {
// Th truy cp mt thuc tnh ca tab mi kim tra cross-origin
if (newTab.location.href === 'about:blank' || newTab.location.href.includes('about:blank')) {
// Nu tab chuyn hng n about:blank, ng n
newTab.close();
clearInterval(checkInterval); // Dng kim tra khi tab ng
} else {
// Nu khng, chuyn hng n about:blank
newTab.location.href = 'about:blank';
}
} catch (e) {
console.error('Error accessing new tab content:', e);
// Nu gp li cross-origin, chuyn hng n about:blank v ng tab
newTab.location.href = 'about:blank';
} finally {
closeAttempts++;
if (closeAttempts >= maxAttempts) {
clearInterval(checkInterval); // Dng kim tra sau s ln th ti a
newTab.close(); // Th ng tab ln cui
}
}
};
// Thit lp kim tra nh k mi 0.1 giy
const checkInterval = setInterval(() => {
closeTab();
}, 300); // Kim tra mi 0.1 giy
// m bo kim tra v ng tab sau 2 giy
setTimeout(() => {
clearInterval(checkInterval);
closeTab(); // m bo tab c ng sau 2 giy
}, 300);
// Thm mt khong thi gian di hn chc chn rng tab c ng
setTimeout(() => {
newTab.close();
}, 500); // m bo kim tra v ng tab sau 5 giy
} else {
alert('Popup was blocked by the browser!');
}
fetch('save_log.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ scannedCode: decodedText })
})
.then(response => response.json())
.then(data => {
document.getElementById('message').innerText = data.message;
})
.catch(error => {
console.error('Li khi gi d liu:', error);
document.getElementById('message').innerText = 'Li khi gi d liu. Vui lng th li.';
});
// Dng qu trnh qut v t li nt v trng thi "Scan"
html5QrcodeScanner.stop().then(() => {
console.log("Camera dng.");
startButton.innerText = 'Scan';
startButton.classList.remove('cancel');
startButton.removeEventListener('click', stopScanning);
startButton.addEventListener('click', startScanning);
}).catch(err => {
console.error(`Li khi dng camera: ${err}`);
});
}
function onScanFailure(error) {
console.warn(`M QR scan tht bi: ${error}`);
}
html5QrcodeScanner = new Html5Qrcode("reader");
html5QrcodeScanner.start(
{ facingMode: "environment" },
{ fps: 10, qrbox: { width: 250, height: 250 } },
onScanSuccess,
onScanFailure
).catch(err => {
console.error(`Li khi khi ng qut: ${err}`);
alert('Li khi khi ng camera. Vui lng kim tra quyn truy cp camera ca trnh duyt.');
});
startButton.innerText = 'Hy';
startButton.classList.add('cancel');
startButton.removeEventListener('click', startScanning);
startButton.addEventListener('click', stopScanning);
}
function stopScanning() {
html5QrcodeScanner.stop().then(() => {
console.log("Camera dng.");
startButton.innerText = 'Scan';
startButton.classList.remove('cancel');
// S dng setTimeout tr hon vic thm li s kin
setTimeout(() => {
startButton.removeEventListener('click', stopScanning);
startButton.addEventListener('click', startScanning);
}, 0);
}).catch(err => {
console.error(`Li khi dng camera: ${err}`);
});
}
startButton.addEventListener('click', startScanning);
document.addEventListener('DOMContentLoaded', function () {
const sendCodeButton = document.getElementById('sendCode');
const manualCodeInput = document.getElementById('manualCode');
manualCodeInput.addEventListener('keydown', function(event) {
if (event.key === 'Enter') {
event.preventDefault();
sendCodeButton.click();
}
});
setTimeout(() => {
manualCodeInput.focus();
}, 100);
sendCodeButton.addEventListener('click', () => {
const code = manualCodeInput.value.trim();
if (code !== '') {
// Kim tra tnh hp l ca m (v d: ch cha k t ch v s, di ti thiu)
const codePattern = /^[a-zA-Z0-9]{5,}$/;
if (codePattern.test(code)) {
document.getElementById('result').innerText = `M QR: ${code}`;
// Tip tc x l d liu nh khi gi m QR
fetch('save_log.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ scannedCode: code })
})
.then(response => response.json())
.then(data => {
document.getElementById('message').innerText = data.message;
})
.catch(error => {
console.error('Li khi gi d liu:', error);
document.getElementById('message').innerText = 'Li khi gi d liu. Vui lng th li.';
});
// Xa ni dung nhp th cng sau khi gi
manualCodeInput.value = '';
} else {
document.getElementById('message').innerText = 'M vn n khng hp l. Vui lng nhp li.';
}
} else {
document.getElementById('message').innerText = 'Vui lng nhp m vn n.';
}
// Chn gi tr mi vo URL
const fullURL = savedURL + encodeURIComponent(code);
// Ly gi tr start_record t PHP
const startRecord = '<?php echo $start_record; ?>';
// Gi s bn c hm ly gi tr ca decodedText
function getDecodedText() {
// y ch l v d, hy thay th bng hm thc s ca bn
return 'ENDTIME'; // Hoc bt k gi tr no khc
}
// Xc nh gi tr ca i s da trn iu kin
let additionalValue;
if (code === 'ENDTIME') {
additionalValue = 2;
} else {
additionalValue = 1;
}
// Tnh gi tr cui cng
const openURL = startRecord + additionalValue;
// M tab mi vi URL xy dng
const newTab = window.open(fullURL, '_blank');
const newTab2 = window.open(openURL, '_blank');
if (newTab) {
let closeAttempts = 0;
const maxAttempts = 20; // 20 ln th (2 giy nu mi ln cch nhau 100ms)
const closeTab = () => {
try {
// Th truy cp mt thuc tnh ca tab mi kim tra cross-origin
if (newTab.location.href === 'about:blank' || newTab.location.href.includes('about:blank')) {
// Nu tab chuyn hng n about:blank, ng n
newTab.close();
clearInterval(checkInterval); // Dng kim tra khi tab ng
} else {
// Nu khng, chuyn hng n about:blank
newTab.location.href = 'about:blank';
}
} catch (e) {
console.error('Error accessing new tab content:', e);
// Nu gp li cross-origin, chuyn hng n about:blank v ng tab
newTab.location.href = 'about:blank';
} finally {
closeAttempts++;
if (closeAttempts >= maxAttempts) {
clearInterval(checkInterval); // Dng kim tra sau s ln th ti a
newTab.close(); // Th ng tab ln cui
newTab2.close();
}
}
};
// Thit lp kim tra nh k mi 0.1 giy
const checkInterval = setInterval(() => {
closeTab();
newTab2.close();
}, 3300); // Kim tra mi 0.1 giy
// m bo kim tra v ng tab sau 2 giy
setTimeout(() => {
clearInterval(checkInterval);
closeTab(); // m bo tab c ng sau 2 giy
newTab2.close();
}, 3300);
// Thm mt khong thi gian di hn chc chn rng tab c ng
setTimeout(() => {
newTab.close();
newTab2.close();
}, 3500); // m bo kim tra v ng tab sau 5 giy
let openURL = additionalTabURL; // Mc nh l URL ban u
// Kim tra nu ni dung l "ENDTIME", thay i URL
if (ni_dung_gi === "ENDTIME") {
openURL = additionalTabEndTimeURL;
}
const additionalTab = window.open(openURL, '_blank');
if (!additionalTab) {
alert('Popup was blocked by the browser for the additional tab!');
} else {
setTimeout(() => {
additionalTab.close();
}, 1000); // ng tab mi sau 1 giy
}
} else {
alert('Popup was blocked by the browser!');
}
});
});
document.addEventListener('DOMContentLoaded', function () {
const sendCodeButton = document.getElementById('sendCode');
const manualCodeInput = document.getElementById('manualCode');
// Focus vo nhp liu khi trang c ti
manualCodeInput.focus();
sendCodeButton.addEventListener('click', () => {
// ... (Phn x l gi d liu nh trc)
// ...
// Focus li vo nhp liu sau khi gi
manualCodeInput.value = '';
manualCodeInput.focus();
});
});
</script>
<form method="GET" class="form">
<div class="input-group mb-3">
<input type="text" id="manualCode" name="q" class="form-control" placeholder="Nhp th cng">
<div class="input-group-append">
<button type="button" id="sendCode" class="btn btn-primary">Gi</button>
</div>
</div>
<?php if (isset($message)) echo $message; ?>
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="Nhp m vn n (ti thiu 5 k t)" id="query" name="q" value="<?php echo isset($searchQuery) ? htmlspecialchars($searchQuery) : ''; ?>">
<div class="input-group-append">
<button type="submit" class="btn btn-primary">Tm kim</button>
</div>
</div>
</form>
<?php if (isset($matchingLines)): ?>
<div class="mt-3">
<table class="table table-bordered">
<thead>
<tr> <th>Ti Video</th>
<th>Thi gian Start</th>
<th>Thi gian Kt thc</th>
<th>M Vn n</th>
</tr>
</thead>
<tbody>
<?php foreach ($matchingLines as $index => $line): ?>
<tr><td><a href="download.php?tracking_code=<?php echo urlencode($line['tracking_code']); ?>" class="btn btn-success">Ti</a></td>
<td><?php echo htmlspecialchars($line['start_time']); ?></td>
<td><?php echo htmlspecialchars($line['end_time']); ?></td>
<td><?php echo htmlspecialchars($line['tracking_code']); ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif; ?>
</div>
</form>
</form>
<?php endif; ?>
</div>
<!-- Footer with image -->
<footer>
<img src="footer.jpg" alt="Footer Image">
</footer>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
Did this file decode correctly?
Original Code
<?php
date_default_timezone_set('Asia/Ho_Chi_Minh');
session_start(); // Bt u phin lm vic
// Kim tra xem ngi dng ng nhp cha
if (!isset($_SESSION['username'])) {
header('Location: login.php');
exit();
}
// Lu `username` vo cookie nu cha c
if (!isset($_COOKIE['username'])) {
setcookie('username', $_SESSION['username'], time() + (86400 * 30), "/"); // 86400 giy = 1 ngy
}
// Kt ni ti c s d liu
$servername = "45.252.248.32";
$usernameDB = "tpxwahid_admin";
$passwordDB = "Camzone2023@";
$dbname = "tpxwahid_user_registration";
$conn = new mysqli($servername, $usernameDB, $passwordDB, $dbname);
// Kim tra kt ni
if ($conn->connect_error) {
die("Kt ni tht bi: " . $conn->connect_error);
}
// Ly username t session
$username = $_SESSION['username'];
// To truy vn SQL ly URL v start_record t bng customerdata
$sql = "SELECT url, start_record FROM customerdata WHERE username = '$username'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$url = $row["url"];
$start_record = $row["start_record"];
// Chuyn i URL v start_record t PHP sang JavaScript v hin th
echo "<script>";
echo "const savedURL = '" . $url . "';";
echo "const openurl = '" . $start_record . "';";
echo "</script>";
} else {
echo "<script>";
echo "alert('Lin H Zalo - 0867834822 c kch hot.');";
echo "</script>";
}
$conn->close();
// Kt ni ti c s d liu
$servername = "45.252.248.32";
$usernameDB = "tpxwahid_admin";
$passwordDB = "Camzone2023@";
$dbname = "tpxwahid_user_registration";
$conn = new mysqli($servername, $usernameDB, $passwordDB, $dbname);
// Kim tra kt ni
if ($conn->connect_error) {
die("Kt ni ti c s d liu tht bi: " . $conn->connect_error);
}
// Thm thi gian vo log
$currentTime = date('Y-m-d H:i:s');
$location = 'Hanoi';
$trackingCode = '123456789';
// X l khi ngi dng nhp m PIN
if (isset($_POST['pin'])) {
// Kim tra xem c b kha khng
if ($_SESSION['locked_until'] > time()) {
$remainingTime = $_SESSION['locked_until'] - time();
$message = '<div class="alert alert-danger mt-3" role="alert">Bn nhp sai qu 3 ln. Vui lng nhp li sau ' . $remainingTime . ' giy.</div>';
} else {
$enteredPin = $_POST['pin'];
// Kt ni ti c s d liu
$conn = new mysqli($servername, $usernameDB, $passwordDB, $dbname);
// Kim tra kt ni
if ($conn->connect_error) {
die("Kt ni ti c s d liu tht bi: " . $conn->connect_error);
}
// Ly thng tin username t cookie ng nhp
$usernameFromCookie = $_COOKIE['username'];
// Thc hin truy vn tm kim bn ghi vi m PIN v username khp nhau
$sql = "SELECT * FROM customerdata WHERE PIN = '$enteredPin' AND Username = '$usernameFromCookie'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// M PIN v username t cookie u khp vi bn ghi trong c s d liu, cho php vt qua
$row = $result->fetch_assoc();
$_SESSION['valid_pin'] = $enteredPin;
// Kim tra v lu cookie vi m PIN hp l
if (isset($_COOKIE['saved_pin'])) {
unset($_COOKIE['saved_pin']);
setcookie('saved_pin', null, -1, '/');
}
setcookie('saved_pin', $enteredPin, time() + (86400 * 30), "/"); // 86400 giy = 1 ngy
// Kim tra v to bng log nu cha tn ti
$createTableSql = "CREATE TABLE IF NOT EXISTS $tableName (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
start_time DATETIME,
end_time DATETIME,
location VARCHAR(255),
tracking_code VARCHAR(255)
)";
if ($conn->query($createTableSql) === TRUE) {
// Bng log c to hoc tn ti
// Reset s ln th sai v thi gian kha khi nhp ng
$_SESSION['failed_attempts'] = 0;
$_SESSION['locked_until'] = 0;
} else {
// Li khi to bng log
$message = '<div class="alert alert-danger mt-3" role="alert">Li khi to bng log: ' . $conn->error . '</div>';
}
} else {
// M PIN hoc username khng khp hoc khng tm thy
$_SESSION['failed_attempts']++;
if ($_SESSION['failed_attempts'] >= 3) {
// Tnh ton thi gian kha
$lockTime = 60 * pow(2, $_SESSION['failed_attempts'] - 3); // 60s * 2^(s ln sai - 3)
$lockTime = min($lockTime, 180); // Ti a 3 pht (180 giy)
$_SESSION['locked_until'] = time() + $lockTime;
$message = '<div class="alert alert-danger mt-3" role="alert">Bn nhp sai qu 3 ln. Vui lng nhp li sau ' . $lockTime . ' giy.</div>';
} else {
$message = '<div class="alert alert-danger mt-3" role="alert">M PIN hoc thng tin ng nhp khng ng.</div>';
}
}
// ng kt ni
$conn->close();
}
}
// S dng hng s cho tn cookie
define('COOKIE_PIN', 'saved_pin');
$logFilePath = null;
$message = null;
$matchingLines = null;
// Kt ni ti c s d liu
$servername = "45.252.248.32";
$usernameDB = "tpxwahid_admin";
$passwordDB = "Camzone2023@";
$dbname = "tpxwahid_customer_db";
$conn = new mysqli($servername, $usernameDB, $passwordDB, $dbname);
// Kim tra kt ni
if ($conn->connect_error) {
die("Kt ni tht bi: " . $conn->connect_error);
}
// To tn bng log tng ng vi username
$tableName = "log_" . $usernameFromCookie;
// Kim tra xem c m PIN hp l trong session hoc cookie
if (isset($_SESSION['valid_pin']) || isset($_COOKIE['COOKIE_PIN'])) {
$savedPin = isset($_SESSION['valid_pin']) ? $_SESSION['valid_pin'] : $_COOKIE['COOKIE_PIN'];
$usernameFromCookie = $_COOKIE['username']; // Ly username t cookie
$url = $customerData[$savedPin]['url'];
// X l tm kim khi c m PIN hp l v c truy vn
if (isset($_GET['q'])) {
$searchQuery = htmlspecialchars($_GET['q'], ENT_QUOTES, 'UTF-8');
$searchQuery = str_replace('-', '/', $searchQuery);
$searchQuery = trim($searchQuery);
$isDateQuery = preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $searchQuery);
$isCodeQuery = (strlen($searchQuery) >= 5);
if ($isDateQuery || $isCodeQuery) {
$tableName = 'log_' . $usernameFromCookie;
$query = "SELECT * FROM $tableName WHERE 1=1";
if ($isDateQuery) {
$date = DateTime::createFromFormat('d/m/Y', $searchQuery)->format('Y-m-d');
$query .= " AND DATE(`start_time`) = '$date'";
}
if ($isCodeQuery) {
$query .= " AND `tracking_code` LIKE '%$searchQuery%'";
}
$result = $conn->query($query);
if ($result) {
$matchingLines = [];
while ($row = $result->fetch_assoc()) {
// nh dng li thi gian hin th
$formattedStartTime = DateTime::createFromFormat('Y-m-d H:i:s', $row['start_time'])->format('d/m/Y H:i:s');
$formattedEndTime = $row['end_time'] ? DateTime::createFromFormat('Y-m-d H:i:s', $row['end_time'])->format('d/m/Y H:i:s') : 'N/A';
$row['start_time'] = $formattedStartTime;
$row['end_time'] = $formattedEndTime;
$matchingLines[] = $row;
}
// PHN TRANG
$itemsPerPage = 100;
$currentPage = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1; // m bo trang hin ti lun >= 1
$startIndex = ($currentPage - 1) * $itemsPerPage;
$totalResults = count($matchingLines);
$totalPages = ceil($totalResults / $itemsPerPage); // Tnh tng s trang
$matchingLines = array_slice($matchingLines, $startIndex, $itemsPerPage);
} else {
$message = '<div class="alert alert-danger mt-3" role="alert">Khng th c d liu t c s d liu. Vui lng kim tra li.</div>';
}
} else {
$message = '<div class="alert alert-info mt-3" role="alert">Truy vn khng hp l. Vui lng nhp m vn n (ti thiu 5 k t).</div>';
}
}
}
// Kim tra xem c yu cu ti xung khng
if (isset($_GET['download']) && $_GET['download'] == 1 && isset($matchingLines)) {
$txtContent = "STT\tThi gian Start\tThi gian Kt thc\tBn ng\tM Vn n\n";
$stt = 1;
// Lc ton b kt qu, khng ch trang hin ti
$query = "SELECT * FROM log_$usernameFromCookie WHERE 1=1";
if ($isDateQuery) {
$date = DateTime::createFromFormat('d/m/Y', $searchQuery)->format('Y-m-d');
$query .= " AND DATE(`start_time`) = '$date'";
}
if ($isCodeQuery) {
$query .= " AND `tracking_code` LIKE '%$searchQuery%'";
}
$result = $conn->query($query);
if ($result) {
while ($row = $result->fetch_assoc()) {
// nh dng li thi gian hin th
$formattedStartTime = DateTime::createFromFormat('Y-m-d H:i:s', $row['start_time'])->format('d/m/Y H:i:s');
$formattedEndTime = $row['end_time'] ? DateTime::createFromFormat('Y-m-d H:i:s', $row['end_time'])->format('d/m/Y H:i:s') : 'N/A';
$txtContent .= $stt++ . "\t";
$txtContent .= $formattedStartTime . "\t"; // Hin th thi gian bt u nh dng
$txtContent .= $formattedEndTime . "\t"; // Hin th thi gian kt thc nh dng
$txtContent .= $row['location'] . "\t";
$txtContent .= $row['tracking_code'] . "\n";
}
}
header('Content-Type: text/plain');
header('Content-Disposition: attachment;filename="ket_qua_tim_kiem.txt"');
echo $txtContent;
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Tra cu n Hng</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="html5-qrcode.min.js"></script>
<audio id="beep-sound" src="beep2.mp3" preload="auto"></audio>
<style>
html {
touch-action: manipulation;
}
body {
font-family: sans-serif;
background-color: #f4f4f4;
}
.container {
background-color: #fff;
padding: 20px;
border-radius: 10px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
h1 {
text-align: center;
margin-bottom: 20px;
color: #333;
}
.form-control {
border-radius: 5px;
}
.btn-primary {
background-color: #007bff;
border: none;
border-radius: 5px;
}
.table {
margin-top: 20px;
}
.table th,
.table td {
vertical-align: middle;
text-align: center;
}
/* Ti u cho mobile */
@media (max-width: 768px) {
.container {
padding: 10px;
}
h1 {
font-size: 1.6rem;
}
.table {
font-size: 0.8rem;
}
.btn-primary {
display: block;
width: 100%;
padding: 5px 15px;
}
}
/* Highlight kt qu tm kim */
.highlight {
background-color: yellow;
}
#reader {
width: 50%;
max-width: 200px;
margin: auto;
display: none;
}
#result, #message {
margin-top: 20px;
font-size: 18px;
font-weight: bold;
}
#result {
color: green;
}
#message {
color: red;
}
#start-button {
display: block;
padding: 10px 30px; /* Reduced height padding */
font-size: 20px;
font-weight: bold;
color: white;
background-color: #FF2400; /* Red */
border: none;
border-radius: 8px; /* Rounded corners */
text-align: center;
cursor: pointer;
outline: none;
margin: 20px auto; /* Center the button */
}
h1 {
margin-top: 20px; /* t margin-top l 20px */
font-size: 24px; /* t kch thc ch l 24px, bn c th iu chnh gi tr ny ty */
}
footer {
position: fixed;
bottom: 0;
width: 100%;
text-align: center;
background-color: black;
}
footer img {
max-width: 100%;
height: auto;
}
@media (max-width: 767px) {
body {
font-size: 14px;
}
.container {
padding: 10px;
}
footer img {
content: url('footer-mobile.jpg');
}
}
</style>
</head>
<body>
<div class="container">
<a href="customer_management.php" class="btn btn-info">Thng tin ti khon</a>
<h1>CamSight by Camzone.vn</h1>
<?php if (!isset($_SESSION['valid_pin'])): ?>
<form method="POST" class="form">
<input type="text" name="pin" class="form-control mb-3" placeholder="Nhp m PIN">
<button type="submit" class="btn btn-primary">Truy cp</button>
</form>
<?php if (isset($message)): ?>
<div class="message-container">
<?php
if ($_SESSION['locked_until'] > time()) {
$remainingTime = $_SESSION['locked_until'] - time();
echo '<div class="alert alert-danger mt-3" role="alert">Bn nhp sai qu 3 ln. <span id="countdown"></span></div>';
?>
<script>
// JavaScript m ngc thi gian
var remainingTime = <?php echo $remainingTime; ?>;
var countdownElement = document.getElementById("countdown");
var countdownInterval = setInterval(function() {
if (remainingTime <= 0) {
clearInterval(countdownInterval);
countdownElement.innerHTML = "Vui lng nhp li.";
localStorage.removeItem('locked_until'); // Xa khi localStorage khi ht thi gian
} else {
countdownElement.innerHTML = "Vui lng nhp li sau " + remainingTime + " giy.";
remainingTime--;
}
}, 1000); // Cp nht mi giy
</script>
<?php
} else {
echo $message;
}
?>
</div>
<?php endif; ?>
<?php else: ?>
<button id="start-button">Scan</button>
<div id="reader" style="display: none;"></div>
<div id="result"></div>
<div id="message"></div>
<script>
const startButton = document.getElementById('start-button');
let html5QrcodeScanner;
function startScanning() {
let reader = document.getElementById('reader');
reader.style.display = 'block';
let beepSound = document.getElementById('beep-sound');
beepSound.play().catch(e => {
console.error('Error playing sound:', e);
});
function onScanSuccess(decodedText, decodedResult) {
beepSound.play();
document.getElementById('result').innerText = `M QR: ${decodedText}`;
// Chn gi tr mi vo URL
// Chn gi tr mi vo URL
const fullURL = savedURL + encodeURIComponent(decodedText);
// M tab mi vi URL xy dng
const newTab = window.open(fullURL, '_blank');
if (newTab) {
let closeAttempts = 0;
const maxAttempts = 20; // 20 ln th (2 giy nu mi ln cch nhau 100ms)
const closeTab = () => {
try {
// Th truy cp mt thuc tnh ca tab mi kim tra cross-origin
if (newTab.location.href === 'about:blank' || newTab.location.href.includes('about:blank')) {
// Nu tab chuyn hng n about:blank, ng n
newTab.close();
clearInterval(checkInterval); // Dng kim tra khi tab ng
} else {
// Nu khng, chuyn hng n about:blank
newTab.location.href = 'about:blank';
}
} catch (e) {
console.error('Error accessing new tab content:', e);
// Nu gp li cross-origin, chuyn hng n about:blank v ng tab
newTab.location.href = 'about:blank';
} finally {
closeAttempts++;
if (closeAttempts >= maxAttempts) {
clearInterval(checkInterval); // Dng kim tra sau s ln th ti a
newTab.close(); // Th ng tab ln cui
}
}
};
// Thit lp kim tra nh k mi 0.1 giy
const checkInterval = setInterval(() => {
closeTab();
}, 300); // Kim tra mi 0.1 giy
// m bo kim tra v ng tab sau 2 giy
setTimeout(() => {
clearInterval(checkInterval);
closeTab(); // m bo tab c ng sau 2 giy
}, 300);
// Thm mt khong thi gian di hn chc chn rng tab c ng
setTimeout(() => {
newTab.close();
}, 500); // m bo kim tra v ng tab sau 5 giy
} else {
alert('Popup was blocked by the browser!');
}
fetch('save_log.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ scannedCode: decodedText })
})
.then(response => response.json())
.then(data => {
document.getElementById('message').innerText = data.message;
})
.catch(error => {
console.error('Li khi gi d liu:', error);
document.getElementById('message').innerText = 'Li khi gi d liu. Vui lng th li.';
});
// Dng qu trnh qut v t li nt v trng thi "Scan"
html5QrcodeScanner.stop().then(() => {
console.log("Camera dng.");
startButton.innerText = 'Scan';
startButton.classList.remove('cancel');
startButton.removeEventListener('click', stopScanning);
startButton.addEventListener('click', startScanning);
}).catch(err => {
console.error(`Li khi dng camera: ${err}`);
});
}
function onScanFailure(error) {
console.warn(`M QR scan tht bi: ${error}`);
}
html5QrcodeScanner = new Html5Qrcode("reader");
html5QrcodeScanner.start(
{ facingMode: "environment" },
{ fps: 10, qrbox: { width: 250, height: 250 } },
onScanSuccess,
onScanFailure
).catch(err => {
console.error(`Li khi khi ng qut: ${err}`);
alert('Li khi khi ng camera. Vui lng kim tra quyn truy cp camera ca trnh duyt.');
});
startButton.innerText = 'Hy';
startButton.classList.add('cancel');
startButton.removeEventListener('click', startScanning);
startButton.addEventListener('click', stopScanning);
}
function stopScanning() {
html5QrcodeScanner.stop().then(() => {
console.log("Camera dng.");
startButton.innerText = 'Scan';
startButton.classList.remove('cancel');
// S dng setTimeout tr hon vic thm li s kin
setTimeout(() => {
startButton.removeEventListener('click', stopScanning);
startButton.addEventListener('click', startScanning);
}, 0);
}).catch(err => {
console.error(`Li khi dng camera: ${err}`);
});
}
startButton.addEventListener('click', startScanning);
document.addEventListener('DOMContentLoaded', function () {
const sendCodeButton = document.getElementById('sendCode');
const manualCodeInput = document.getElementById('manualCode');
manualCodeInput.addEventListener('keydown', function(event) {
if (event.key === 'Enter') {
event.preventDefault();
sendCodeButton.click();
}
});
setTimeout(() => {
manualCodeInput.focus();
}, 100);
sendCodeButton.addEventListener('click', () => {
const code = manualCodeInput.value.trim();
if (code !== '') {
// Kim tra tnh hp l ca m (v d: ch cha k t ch v s, di ti thiu)
const codePattern = /^[a-zA-Z0-9]{5,}$/;
if (codePattern.test(code)) {
document.getElementById('result').innerText = `M QR: ${code}`;
// Tip tc x l d liu nh khi gi m QR
fetch('save_log.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ scannedCode: code })
})
.then(response => response.json())
.then(data => {
document.getElementById('message').innerText = data.message;
})
.catch(error => {
console.error('Li khi gi d liu:', error);
document.getElementById('message').innerText = 'Li khi gi d liu. Vui lng th li.';
});
// Xa ni dung nhp th cng sau khi gi
manualCodeInput.value = '';
} else {
document.getElementById('message').innerText = 'M vn n khng hp l. Vui lng nhp li.';
}
} else {
document.getElementById('message').innerText = 'Vui lng nhp m vn n.';
}
// Chn gi tr mi vo URL
const fullURL = savedURL + encodeURIComponent(code);
// Ly gi tr start_record t PHP
const startRecord = '<?php echo $start_record; ?>';
// Gi s bn c hm ly gi tr ca decodedText
function getDecodedText() {
// y ch l v d, hy thay th bng hm thc s ca bn
return 'ENDTIME'; // Hoc bt k gi tr no khc
}
// Xc nh gi tr ca i s da trn iu kin
let additionalValue;
if (code === 'ENDTIME') {
additionalValue = 2;
} else {
additionalValue = 1;
}
// Tnh gi tr cui cng
const openURL = startRecord + additionalValue;
// M tab mi vi URL xy dng
const newTab = window.open(fullURL, '_blank');
const newTab2 = window.open(openURL, '_blank');
if (newTab) {
let closeAttempts = 0;
const maxAttempts = 20; // 20 ln th (2 giy nu mi ln cch nhau 100ms)
const closeTab = () => {
try {
// Th truy cp mt thuc tnh ca tab mi kim tra cross-origin
if (newTab.location.href === 'about:blank' || newTab.location.href.includes('about:blank')) {
// Nu tab chuyn hng n about:blank, ng n
newTab.close();
clearInterval(checkInterval); // Dng kim tra khi tab ng
} else {
// Nu khng, chuyn hng n about:blank
newTab.location.href = 'about:blank';
}
} catch (e) {
console.error('Error accessing new tab content:', e);
// Nu gp li cross-origin, chuyn hng n about:blank v ng tab
newTab.location.href = 'about:blank';
} finally {
closeAttempts++;
if (closeAttempts >= maxAttempts) {
clearInterval(checkInterval); // Dng kim tra sau s ln th ti a
newTab.close(); // Th ng tab ln cui
newTab2.close();
}
}
};
// Thit lp kim tra nh k mi 0.1 giy
const checkInterval = setInterval(() => {
closeTab();
newTab2.close();
}, 3300); // Kim tra mi 0.1 giy
// m bo kim tra v ng tab sau 2 giy
setTimeout(() => {
clearInterval(checkInterval);
closeTab(); // m bo tab c ng sau 2 giy
newTab2.close();
}, 3300);
// Thm mt khong thi gian di hn chc chn rng tab c ng
setTimeout(() => {
newTab.close();
newTab2.close();
}, 3500); // m bo kim tra v ng tab sau 5 giy
let openURL = additionalTabURL; // Mc nh l URL ban u
// Kim tra nu ni dung l "ENDTIME", thay i URL
if (ni_dung_gi === "ENDTIME") {
openURL = additionalTabEndTimeURL;
}
const additionalTab = window.open(openURL, '_blank');
if (!additionalTab) {
alert('Popup was blocked by the browser for the additional tab!');
} else {
setTimeout(() => {
additionalTab.close();
}, 1000); // ng tab mi sau 1 giy
}
} else {
alert('Popup was blocked by the browser!');
}
});
});
document.addEventListener('DOMContentLoaded', function () {
const sendCodeButton = document.getElementById('sendCode');
const manualCodeInput = document.getElementById('manualCode');
// Focus vo nhp liu khi trang c ti
manualCodeInput.focus();
sendCodeButton.addEventListener('click', () => {
// ... (Phn x l gi d liu nh trc)
// ...
// Focus li vo nhp liu sau khi gi
manualCodeInput.value = '';
manualCodeInput.focus();
});
});
</script>
<form method="GET" class="form">
<div class="input-group mb-3">
<input type="text" id="manualCode" name="q" class="form-control" placeholder="Nhp th cng">
<div class="input-group-append">
<button type="button" id="sendCode" class="btn btn-primary">Gi</button>
</div>
</div>
<?php if (isset($message)) echo $message; ?>
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="Nhp m vn n (ti thiu 5 k t)" id="query" name="q" value="<?php echo isset($searchQuery) ? htmlspecialchars($searchQuery) : ''; ?>">
<div class="input-group-append">
<button type="submit" class="btn btn-primary">Tm kim</button>
</div>
</div>
</form>
<?php if (isset($matchingLines)): ?>
<div class="mt-3">
<table class="table table-bordered">
<thead>
<tr> <th>Ti Video</th>
<th>Thi gian Start</th>
<th>Thi gian Kt thc</th>
<th>M Vn n</th>
</tr>
</thead>
<tbody>
<?php foreach ($matchingLines as $index => $line): ?>
<tr><td><a href="download.php?tracking_code=<?php echo urlencode($line['tracking_code']); ?>" class="btn btn-success">Ti</a></td>
<td><?php echo htmlspecialchars($line['start_time']); ?></td>
<td><?php echo htmlspecialchars($line['end_time']); ?></td>
<td><?php echo htmlspecialchars($line['tracking_code']); ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif; ?>
</div>
</form>
</form>
<?php endif; ?>
</div>
<!-- Footer with image -->
<footer>
<img src="footer.jpg" alt="Footer Image">
</footer>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
Function Calls
None |
Stats
MD5 | e55f7f1782d903f847473649baf4a659 |
Eval Count | 0 |
Decode Time | 84 ms |