Cakephp。将用户ip传递给Form

时间:2013-11-12 17:14:59

标签: php cakephp ip

我正在尝试传递用户ip usign表单,但我可以处理这个问题。甚至谷歌搜索,在我的案例中搜索食谱是没用的。

如何在创建帖子时在表单中传递用户ip?当然使用cakephp

这是我的所有表格

<?php echo $this->Form->create('Info'); ?>
Tytuł :
<?php echo $this->Form->input(__('title',true),array('class'=>'form-controll')); ?>
Treść newsa: 
<?php echo $this->Form->input(__('body',true),array('class'=>'form-controll')); ?>
<?php $this->Form->input(__('ip',true)) = $this->request->clientIp(); ?>
<?php echo $this->Form->submit(__('Dodaj newsa',true),array('class'=>'btn btn-success')); ?>
<?php echo $this->Form->end(); ?>

我专注于这件事

<?php $this->Form->input(__('ip',true)) = $this->request->clientIp(); ?>

当然这是错的,但我尝试了不同的组合。 请给我一些提示。 此致

修改。

我想将它传递给我的数据库库中的表,这就是我尝试使用某种帖子的原因。

EDIT2

感谢iso27002 我解决了我的问题,如下 在控制器

$this->request->data['Info']['ip'] = $this->request->clientIp();

3 个答案:

答案 0 :(得分:2)

您具有正确的功能$this->request->clientIp();,但您需要从控制器中调用它。因此,不要使用具有此值的隐藏字段,而只是将其自己附加到请求数据。例如,

$this->request->data['Info']['ip'] = $this->request->clientIp();

然后,如果存在包含客户端IP的隐藏字段,则可以使用相同的代码逻辑。

答案 1 :(得分:1)

你没有。 IP是请求和控制器的一部分。 你只需在那里使用它 - 不需要通过帖子传递它。

只需使用

env('REMOTE_ADDR');

在控制器内部。

答案 2 :(得分:0)

有一个包含客户端IP的服务器变量列表:

$_SERVER['HTTP_X_FORWARDED_FOR']
$_SERVER['REMOTE_ADDR']
$_SERVER['HTTP_CLIENT_IP']

您可以制作一些if..elseif..else语句以获取正确的客户端IP地址。您不需要包含ip作为表单字段。使用Cake Request类或直接从$_SERVER全局变量获取post url中的ip addres。 如果你使用ip地址作为某些东西的验证器,请记住,即使隐藏了表单字段值,客户端也可以更改它们。道歉我的一般发言方式,我从未通过Cake的“入门”。