使用Perl和HTML :: Mason的表单提交者(远程IP地址)的IP地址

时间:2013-01-10 19:11:44

标签: html perl mason

我正在使用HTML::Mason来投放包含表单的网页。填写并提交表单后,我想知道远程客户端的IP地址。

我尝试打印$r->headers_in,但我得到了

Apache2::Request=SCALAR(0x1961ba0)->headers_in

我使用了错误的论点吗?

1 个答案:

答案 0 :(得分:1)

对于CGI应用程序,远程IP地址位于$ENV{REMOTE_ADDR}

如果您使用的是mod_perl,则等效值为$r->connection->remote_ip,其中$r是您的Apache2::Request对象。

如果您使用双引号进行方法调用,则会生成您显示的输出,例如

print "$r->headers_in\n"

如果删除引号

,它将正常工作
print $r->headers_in, "\n"

$r->headers_in方法返回APR::Table个对象。您可以使用do方法和一个合适的子例程(必须返回1以通过表继续迭代来转储此内容),如下所示:

my $table = $r->headers_in;
$table->do(sub {
  printf "%s: %s\n", @_;
  1;
});