蛋糕 .将用户 ip 传递到表单


Cakephp . Pass user ip to Form

我正在尝试传递用户 ip usign 表单,但我无法处理这个问题。就我而言,即使是谷歌搜索和在食谱中搜索也是没有用的。

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

这是我的全部表格

<?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(); ?>

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

编辑。

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

编辑2

得益于 ISO27002我解决了我的问题,在控制器中

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

你拥有函数的权利,$this->request->clientIp();,但你需要从控制器调用它。因此,与其使用此值的隐藏字段,不如自己将其附加到请求数据中。例如

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

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

你没有。IP 是请求和控制器的一部分。您只需在那里使用它 - 无需通过邮寄方式通过表单传递它。

只需使用

env('REMOTE_ADDR');

在控制器内部。

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

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

你可以做一些如果..否则如果..else 语句以获取正确的客户端 IP 地址。您不需要将 ip 作为表单字段包含在内。使用 Cake Request 类或直接从全局变量获取 post url 中的 ip 地址$_SERVER。如果您使用 IP 地址作为某些内容的验证器,请记住,客户端可以更改表单字段值,即使它们是隐藏的。抱歉,我的一般说话方式,我从不通过蛋糕的入门。