Select 并显示服务器文件
Select and display server files
我正在使用 shell_exec
在我的服务器上执行命令并使用回显显示结果。
现在,我想select并显示显示的文件。我该怎么做?
<body>
<form method="get" action="<?php echo $_SERVER["PHP_SELF"] ?>">
<input type="submit" class="reset_button"/>
<p><b>Search</b></p>
<?php
<input type='text' name='idtest' value='' />
<input type='submit' value='consultar' />
?>
<?php
$consulta=$_GET[idtest];
$salida = shell_exec('find / -iname *'.$consulta.'*|sort');
echo "<pre>$salida</pre>";
?>
</body>
代码结果:
text1.txt
text2.txt
text3.txt
text4.txt
以下是显示所有内容的方法:
您可以在最后一个代码段下方添加此代码段,在 </body>
:
之上
<?php
$consulta=$_GET[idtest];
$alltext = shell_exec('find / -iname *'.$consulta.'* |sort|xargs -I{} cat {}');
echo "<pre>$alltext</pre>";
?>
现在你想要的有点棘手:只需将 $salida
作为数组读取,从而为每个文件创建一个 link 到一个 new_page.php
;
然后在 new_page.php
:
<?php
$filename=$_GET[filename];
$onetext = shell_exec('cat '.$filename);
echo "<pre>$onetext</pre>";
?>
$salida = shell_exec('find / -iname '.$consulta.' |sort');
这不会像您期望的那样工作; *'.$consulta.'*
将被扩展以匹配当前目录中的任何内容。应该是\'*'.$consulta.'*\'
我也在努力想象通过网络服务器公开此类功能的意义所在 - 搜索整个文件系统的成本很高,并且可能会公开很多不应远程访问的内容。
How can I do this?
如果是我....
<?php
$consulta=$_GET[idtest];
$salida = explode("\n", shell_exec('find / -iname \*'.$consulta.'\* | sort'));
foreach ($salida as $s) {
if (is_readable($s)) {
print "<a href='filereader.php?src=" . urlencode($s)
. "'>" . htmlentities($s) . "</a><br />";
} else {
print htmlentities($s) . "<br />";
}
?>
filereader.php的内容应该是显而易见的。
我正在使用 shell_exec
在我的服务器上执行命令并使用回显显示结果。
现在,我想select并显示显示的文件。我该怎么做?
<body>
<form method="get" action="<?php echo $_SERVER["PHP_SELF"] ?>">
<input type="submit" class="reset_button"/>
<p><b>Search</b></p>
<?php
<input type='text' name='idtest' value='' />
<input type='submit' value='consultar' />
?>
<?php
$consulta=$_GET[idtest];
$salida = shell_exec('find / -iname *'.$consulta.'*|sort');
echo "<pre>$salida</pre>";
?>
</body>
代码结果:
text1.txt
text2.txt
text3.txt
text4.txt
以下是显示所有内容的方法:
您可以在最后一个代码段下方添加此代码段,在 </body>
:
<?php
$consulta=$_GET[idtest];
$alltext = shell_exec('find / -iname *'.$consulta.'* |sort|xargs -I{} cat {}');
echo "<pre>$alltext</pre>";
?>
现在你想要的有点棘手:只需将 $salida
作为数组读取,从而为每个文件创建一个 link 到一个 new_page.php
;
然后在 new_page.php
:
<?php
$filename=$_GET[filename];
$onetext = shell_exec('cat '.$filename);
echo "<pre>$onetext</pre>";
?>
$salida = shell_exec('find / -iname '.$consulta.' |sort');
这不会像您期望的那样工作; *'.$consulta.'*
将被扩展以匹配当前目录中的任何内容。应该是\'*'.$consulta.'*\'
我也在努力想象通过网络服务器公开此类功能的意义所在 - 搜索整个文件系统的成本很高,并且可能会公开很多不应远程访问的内容。
How can I do this?
如果是我....
<?php
$consulta=$_GET[idtest];
$salida = explode("\n", shell_exec('find / -iname \*'.$consulta.'\* | sort'));
foreach ($salida as $s) {
if (is_readable($s)) {
print "<a href='filereader.php?src=" . urlencode($s)
. "'>" . htmlentities($s) . "</a><br />";
} else {
print htmlentities($s) . "<br />";
}
?>
filereader.php的内容应该是显而易见的。