2014-10-05 52 views
0

我有一個php頁面,我正在使用一個窗體,並將窗體上的選擇/數據傳遞給我創建的perl腳本。不幸的是,當我傳遞變量時,如果有任何空變量,我在perl腳本上收到的變量不會以正確的順序進入。有沒有辦法確保傳遞給perl腳本的變量是否正在提供正確的命令,而不管它們中是否有數據?將NULL變量傳遞給PHP中的Perl?

<form action="index.php" method="post"> 
FTP/SFTP: <select name="TYPE"> 
    <option value="">Select...</option> 
    <option value="ftpd">FTP</option> 
    <option value="sftpd">SFTP</option> 
</select></t><Br> 
Search String: <input type="text" name="SEARCH"></t><br> 
Search Type: <select name="STYPE"> 
    <option value="">Select...</option> 
    <option value="user">Username</option> 
    <option value="ip">IP Address</option> 
    <option value="pid">PID</option> 
    <option value="file">Filename</option> 
</select><br> 
Date (YYYY-MM-DD): <input type="text" name="DATE"></t><br> 
Server: <select name="SERVER"> 
    <option value="">Select...</option> 
    <option value="test1ftp">test1</option> 
    <option value="test2ftp">test2</option> 
</select></t><Br> 

<input type="submit" name="formSearch" value="Search"> 

</form></font></p> 

</body> 
</html> 

這是PHP部分正在調用Perl腳本:

<?php  
    if(isset($_POST['formSearch']) == "Search") 
    { 
     if(empty($_POST['SEARCH'])) 
      $_POST['SEARCH'] = "undef"; 

     if(empty($_POST['SERVER'])) 
      $_POST['SERVER'] = "undef"; 

     if(empty($_POST['DATE'])) 
      $_POST['DATE'] = "undef"; 


     //system("perl search.pl $_POST[TYPE] $_POST[SEARCH] $_POST[STYPE] $_POST[DATE] $_POST[SERVER]", $return_val); 


    } 
?> 

當它到達perl腳本,我有被傳遞去以下變量。

my $TYPE = $ARGV[0]; 
my $SEARCH = $ARGV[1]; 
my $STYPE = $ARGV[2]; 
my $DATE = $ARGV[3]; 
my $SYSTEM = $ARGV[4]; 

所以,如果我在搜索沒有數據似乎應該已經傳遞到$ DATE數據現在$ SEARCH結束。

任何幫助,將不勝感激。

謝謝。

回答

0

引用命令行參數。這也將是有用的,如果$_POST[...]變量中有空格:

system("perl search.pl \"$_POST[TYPE]\" \"$_POST[SEARCH]\" \"$_POST[STYPE]\" \"$_POST[DATE]\" \"$_POST[SERVER]\"", $return_val); 
+0

工作!謝謝! – cycloxr 2014-10-06 14:25:54