使用POST将变量从PHP传递到Perl

时间:2011-11-02 04:14:58

标签: html perl cgi

这个令人沮丧。

如果我运行这个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;

来自远程C​​hrome浏览器

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

生成正确的页面。但是,如果我然后执行这个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://<hostname>/message_test.php

什么都没有。我发誓一年前我有类似的东西。使用HTTP POST将(隐藏)变量传递给Perl时,我应该注意一些新的东西吗?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

在PHP中,不应该

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

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