2012-09-19 54 views
0

我有兩個相當簡單的文件。第一個是一個HTML文件是這樣的:從HTML文件製作變量在PHP文件中工作

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<html> 
<body> 

<form action="test.php" method="post"> 
Search for: <input type="text" name="search" /> 
<input type="submit" name="submit" value="Search" /> 
</form> 

</body> 
</html> 

第二個文件是test.php的,它看起來像這樣:

<? 
     $filepath = "/usr/sbin"; 
     exec("ONE $search -command $filepath "); 
     fopen($filepath, rw); 
?> 

我的問題是,我要使用的參數「搜索」在HTML-form中給出了PHP腳本中變量的值。 ONE是我製作的一個搜索腳本,需要一個參數,我希望它是「$ search」。

這可以做到,如果是的話如何?

非常感謝提前。

+0

$ _POST [「search」]; –

+3

它應該在$ _POST [「search」]中,我想。但要非常謹慎地將用戶輸入的數據傳遞給exec調用。 – andrewsi

+0

不要多次發佈[*相同的問題*](http://stackoverflow.com/questions/12517367/why-doesnt-php-accept-command-with-argument-1) - 它將被視爲垃圾郵件。 – alfasin

回答

1

只是這樣做:

exec("ONE " . $_POST['search']. " -command $filepath "); 

UPDATE
你有另一個錯誤,你的下面一行:

fopen($filepath, rw); 

應該是這樣的:

fopen($filepath, "rw"); 

原因第二個參數爲0123應該以字符串形式傳遞。

更新2
所以它看來,OP要在頁面上打印的命令的輸出,爲您必須使用passthru()代替exec(),就像這樣:

passthru("ONE " . $_POST['search']. " -command $filepath "); 
+0

謝謝,但它似乎沒有工作。 –

+0

「它似乎沒有工作」不是很有幫助。它錯誤嗎?沒做什麼? –

+0

PHP文件應該找到幾個包含「搜索」中給出的單詞的文件,但它會給出一個空白頁面。我猜這個變量沒有被採用。 –

1

您可以通過使用$_POST['search']

在你使用它的外殼叫你應該確保它不會破壞你的系統訪問該變量。

+0

謝謝,但它不起作用。我需要把它放在像這樣的新變量中:search1 = $ _POST ['search']或search1 = $($ _ POST ['search'])? –