403Webshell
Server IP : 193.86.120.172  /  Your IP : 216.73.216.67
Web Server : Apache/2.4.63 (Unix)
System : Linux JServices 3.10.108 #86003 SMP Wed Oct 22 13:20:46 CST 2025 x86_64
User : kubec ( 1026)
PHP Version : 8.2.28
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /volume1/web/hotel_jservices_cz/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /volume1/web/hotel_jservices_cz/zruseni-rezervace.php
<?php
// ============================================================
//  Hotel DEMO — zruseni-rezervace.php
//  Zákazník klikne na odkaz v e-mailu a zruší rezervaci
// ============================================================
require_once __DIR__ . '/includes/config.php';
require_once __DIR__ . '/includes/db.php';
require_once __DIR__ . '/includes/mailer.php';

$token = trim($_GET['token'] ?? '');
$chyba = '';
$rez   = null;
$hotovo = false;

if (!$token) {
    $chyba = 'Neplatný odkaz.';
} else {
    $rez = db_row(
        "SELECT r.*, p.cislo AS pokoj_cislo,
                COALESCE(p.nazev, CONCAT('Pokoj ', p.cislo)) AS pokoj_nazev
         FROM rezervace r
         JOIN pokoje p ON p.id = r.pokoj_id
         WHERE r.token_zmena = ?",
        [$token]
    );
    if (!$rez) $chyba = 'Rezervace nenalezena nebo odkaz vypršel.';
    elseif ($rez['stav'] === 'zrusena') $chyba = 'Tato rezervace již byla zrušena.';
}

// Zpracování formuláře
if (!$chyba && $_SERVER['REQUEST_METHOD'] === 'POST') {
    $storno_dni = (int)nastaveni('rezervace_storno_dni', '3');
    $dnes = new DateTime();
    $prijezd = new DateTime($rez['datum_prijezdu']);
    $dnu_do  = (int)$dnes->diff($prijezd)->days;

    if ($dnu_do < $storno_dni && $prijezd > $dnes) {
        $chyba = 'Rezervaci lze zrušit nejpozději ' . $storno_dni . ' dny před příjezdem. '
               . 'Pro zrušení kontaktujte recepci na ' . nastaveni('hotel_telefon') . '.';
    } else {
        db_query(
            "UPDATE rezervace SET stav='zrusena', duvod_zruseni=? WHERE id=?",
            ['Zrušeno zákazníkem přes e-mailový odkaz', $rez['id']]
        );
        try { odeslat_storno($rez['id']); } catch (\Exception $e) {}
        $hotovo = true;
    }
}

$hotel = nastaveni('hotel_nazev', 'Hotel DEMO');
?>
<!DOCTYPE html>
<html lang="cs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Zrušení rezervace — <?= htmlspecialchars($hotel) ?></title>
<style>
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:Arial,sans-serif;background:#f8fafc;color:#1e293b;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px}
.card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:32px;max-width:480px;width:100%;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.logo{font-size:15px;font-weight:600;color:#2563eb;margin-bottom:24px}
h1{font-size:20px;font-weight:600;margin-bottom:8px}
p{font-size:14px;color:#64748b;line-height:1.6;margin-bottom:16px}
.detail{background:#f8fafc;border-radius:8px;padding:14px;margin-bottom:20px}
.radek{display:flex;justify-content:space-between;font-size:13px;padding:4px 0;color:#64748b}
.radek strong{color:#1e293b}
.alert-error{background:#fee2e2;color:#991b1b;border:1px solid #fecaca;border-radius:8px;padding:12px 14px;font-size:13px;margin-bottom:16px}
.alert-ok{background:#dcfce7;color:#166534;border:1px solid #bbf7d0;border-radius:8px;padding:12px 14px;font-size:13px;margin-bottom:16px}
.btn{display:block;width:100%;padding:11px;border-radius:8px;font-size:14px;font-weight:500;border:none;cursor:pointer;text-align:center;text-decoration:none}
.btn-red{background:#dc2626;color:#fff}
.btn-red:hover{background:#b91c1c}
.btn-gray{background:#f1f5f9;color:#475569;margin-top:8px}
.btn-gray:hover{background:#e2e8f0}
</style>
</head>
<body>
<div class="card">
  <div class="logo"><?= htmlspecialchars($hotel) ?></div>

  <?php if ($hotovo): ?>
    <h1>Rezervace zrušena</h1>
    <p>Vaše rezervace byla úspěšně zrušena. Potvrzení Vám přijde e-mailem.</p>
    <div class="alert-ok">Těšíme se na Vás při příštím pobytu.</div>
    <a href="<?= BASE_URL ?>" class="btn btn-gray">Nová rezervace</a>

  <?php elseif ($chyba): ?>
    <h1>Něco se pokazilo</h1>
    <div class="alert-error"><?= htmlspecialchars($chyba) ?></div>
    <a href="<?= BASE_URL ?>" class="btn btn-gray">Zpět na hlavní stránku</a>

  <?php else: ?>
    <h1>Zrušení rezervace</h1>
    <p>Opravdu chcete zrušit tuto rezervaci?</p>
    <div class="detail">
      <div class="radek"><span>Host</span><strong><?= htmlspecialchars($rez['jmeno'] . ' ' . $rez['prijmeni']) ?></strong></div>
      <div class="radek"><span>Příjezd</span><strong><?= datum_cs($rez['datum_prijezdu']) ?></strong></div>
      <div class="radek"><span>Odjezd</span><strong><?= datum_cs($rez['datum_odjezdu']) ?></strong></div>
      <div class="radek"><span>Pokoj</span><strong><?= htmlspecialchars($rez['pokoj_nazev']) ?></strong></div>
    </div>
    <?php
    $storno_dni = (int)nastaveni('rezervace_storno_dni', '3');
    $prijezd = new DateTime($rez['datum_prijezdu']);
    $dnes    = new DateTime();
    $dnu_do  = max(0, (int)$dnes->diff($prijezd)->days);
    if ($dnu_do < $storno_dni && $prijezd > $dnes):
    ?>
      <div class="alert-error">
        Bezplatné storno je možné nejpozději <?= $storno_dni ?> dny před příjezdem.
        Do Vašeho příjezdu zbývá <?= $dnu_do ?> dní.
        Pro zrušení kontaktujte recepci na <?= htmlspecialchars(nastaveni('hotel_telefon')) ?>.
      </div>
    <?php else: ?>
      <form method="POST">
        <button type="submit" class="btn btn-red">Ano, zrušit rezervaci</button>
        <a href="<?= BASE_URL ?>" class="btn btn-gray">Ne, ponechat rezervaci</a>
      </form>
    <?php endif; ?>
  <?php endif; ?>
</div>
</body>
</html>

Youez - 2016 - github.com/yon3zu
LinuXploit