2016-09-29 69 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>"; 
?> 
相關問題