1

我正在尝试传递用户 ip ussign 表单,但我无法处理此问题。在我的情况下,即使是谷歌搜索和在食谱中搜索也没有用。

在创建某些帖子期间如何以表单形式传递用户 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(); ?>

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

编辑。

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

编辑2

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

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

3 回答 3

2

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

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

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

于 2013-11-12T19:33:40.047 回答
1

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

只需使用

env('REMOTE_ADDR');

在你的控制器里面。

于 2013-11-12T18:38:07.587 回答
0

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

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

您可以制作一些 if..elseif..else 语句来获取正确的客户端 IP 地址。您不需要包含 ip 作为表单字段。$_SERVER使用 Cake Request 类或直接从全局变量获取 post url 中的 ip 地址。如果您使用 ip 地址作为验证器,请记住,客户端可以更改表单字段值,即使它们是隐藏的。抱歉我说话的一般方式,我从来没有从 Cake's Getting Started 过去。

于 2013-11-12T17:27:46.343 回答