-1

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

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

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

我使用了错误的论点吗?

4

1 回答 1

1

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

如果您使用的是 mod_perl,则等效值位于您的对象$r->connection->remote_ip所在的位置。$rApache2::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;
});
于 2013-01-10T19:22:47.190 回答