2011-11-02 46 views
-1

這是一件令人沮喪的事情。使用POST將變量從PHP傳遞到Perl

如果我運行這個perl腳本...

#!/usr/bin/perl 

use CGI qw/:standard/;    # load standard CGI routines 
my $query = new CGI; 

my $club5 = $query->param('club5'); 
my $messagetext = $query->param('messagetext'); 

print header,      # create HTTP header 
    start_html('Hello World'),  # start of HTML 
    h1('Hello World'),    # level 1 headers 
    h1($club5), 
    h1($messagetext), 
    end_html;      # end of HTML 

1; 

從遠程Chrome瀏覽器與

http://www.<hostname>/cgi-bin/message_test.pl?club5=coop9&messagetext=test 

正確的頁面產生。但是,如果我再從同一個瀏覽器與

http://<hostname>/message_test.php 

沒有執行這個PHP程序...

<?php 

$user_id = "10006"; 

echo <<<END 
<html> 
<head> 

<title>Send Message</title> 
</head> 

<BODY bgcolor="#e8e8e8"> 
<br> 
<table width="450px" height="150px" align="center" valign="top" bgcolor="#e8e8e8"> 

<form action="http://<hostname>/cgi-bin/message_test.pl" method="post"> 

<INPUT TYPE="hidden" NAME="user_id" VALUE="$user_id"> 

<tr align="center" valign="top"> 
<td> 
<br> 
<font face="Verdana" size="2"> 

<input name="messagetext" type="text" size="64"> 
<br> 
<br> 
<br><center> 
<input name="submit" type="submit" value="SEND"> 
</font> 
</td> 
</tr> 

</form> 

</table> 

</body> 
</html> 
END; 

?> 

返回。我發誓我在一年前有類似的事情發生。使用HTTP POST將(隱藏)變量傳遞給Perl時,是否有新的東西需要注意?

+1

在我看得更遠之前:'

message_test.pl」method =「post」>似乎並不符合URL:http:// www。 /cgi-bin/message_test.pl?club5 = coop9&messagetext = test'。 你確定它不應該是' /cgi-bin/message_test.pl」method =「post」>'? –

+0

不錯,但爲了清晰起見,我添加了該目錄(!?)我編輯了這篇文章。 – softex

+0

你期待看到什麼?我沒有收到REQUEST-RESPONCE命令。 – fperet

回答

1

這是失敗的,因爲你的瀏覽器不正確地猜測你的無效HTML意味着什麼。

它的工作,我改變

<table ...> 
<form ...> 
<INPUT TYPE="hidden" NAME="user_id" VALUE="$user_id"> 
... 
</form> 
</table> 

<form ...> 
<INPUT TYPE="hidden" NAME="user_id" VALUE="$user_id"> 
<table ...> 
... 
</table> 
</form> 
+0

非常棒!不知道你是如何選擇的。我猜「改變的事情」是更新的Chrome瀏覽器和Safari瀏覽器減少了一些寬容。非常感謝。 – softex

+0

@softex,我使用Firefox進行了測試 – ikegami

0

在PHP中,不應該

<INPUT TYPE="hidden" NAME="user_id" VALUE="$user_id"> 

<INPUT TYPE="hidden" NAME="user_id" VALUE="<? echo $user_id; >"> 

+0

不,它不應該,因爲HTML部分在'heredoc'運算符'<<< END' – Toto

+0

不是,因爲它位於heredoc內(注意'echo <<< END' ),發生變量替換。 –

+0

該代碼已經在'' – ikegami