2016-09-29 64 views
0

我使用shell_exec到我的服务器上执行命令,并显示回声结果。选择并显示服务器文件

现在,我要选择和显示显示的文件。我怎样才能做到这一点?从代码

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

检查文档:http://php.net/manual/en/function.fread.php – Hackerman

+0

你想显示文件的内容或文件名列表? –

+0

该文件的内容。该列表已显示。 – Drennos

回答

1

$萨利达=了shell_exec( '查找/ -iname ' $ CONSULTA ' |排序'。);

这是行不通的,你期望的方式; *'.$consulta.'*将被展开以匹配当前目录中的任何内容。它应该是\'*'.$consulta.'*\'

我也在努力想象,通过网络服务器暴露这样的功能会有什么意义 - 搜索整个文件系统将会很昂贵,并且可能暴露很多不应该是的东西远程访问。

我该怎么做? filereader.php的

如果是我....

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

内容应该是显而易见的。

0

这里是如何显示的一切:

您可以添加下面的最后一个这个片段中,上述</body>

<?php 
    $consulta=$_GET[idtest]; 
    $alltext = shell_exec('find/-iname *'.$consulta.'* |sort|xargs -I{} cat {}');  
echo "<pre>$alltext</pre>"; 
?> 

现在你想要的是一个小技巧:只读$salida作为一个数组,因此创建al每个文件墨水到new_page.php;

然后在new_page.php

<?php 
    $filename=$_GET[filename]; 
    $onetext = shell_exec('cat '.$filename);  
    echo "<pre>$onetext</pre>"; 
?> 
相关问题