这个令人沮丧。
如果我运行这个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
生成正确的页面。但是,如果我然后执行这个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时,我应该注意一些新的东西吗?
答案 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; >">