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的内容应该是显而易见的。