【问题标题】:Adding IP address to my form将 IP 地址添加到我的表单
【发布时间】:2013-11-05 20:02:22
【问题描述】:

我有这个 php 代码。

<?php
      if (isset($_POST['name'], $_POST['post'])) {
             $cast = $_POST['cast'];
             $name = $_POST['name'];
             $email = $_POST['email'];
             $post = nl2br ($_POST['post']);
             $ipaddress = $_POST['ipaddress'];

if (empty($name) or empty($post)) {
             $error = 'All Fields Are Required!';
}else{
$query = $pdo->prepare('INSERT INTO comments (cast, name, email, post, ipaddress) VALUES(?, ?, ?, ?, ?)');
     $query->bindValue(1, $cast);
     $query->bindValue(2, $name);
     $query->bindValue(3, $email);
     $query->bindValue(4, $post);
     $query->bindValue(5, $ipaddress);

     $query->execute();
?>

还有这个表格。

<?php if (isset($error)) { ?>
     <small style="color:#aa0000;"><?php echo $error; ?></small><br /><br />
<?php } ?>

<form action="episode.php?id=<?php echo $data['cast_id']; ?>" method="post" autocomplete="off" enctype="multipart/form-data">
<input type="text" name="name" placeholder="Name" /> / <input type="text" name="email" placeholder="Email" /><small style="color:#aa0000;">*</small><br /><br />
<textarea rows="10" cols="50" name="post" placeholder="Comment"></textarea><br /><br />
<input type="submit" value="Add Comment" />
<br /><br />
<small style="color:#aa0000;">* <b>Email will not be displayed publicly</b></small><br />
</form>

如您所见,我已经设置了一个 IP 地址,以便与此表单一起保存在我的数据库中。

如何在表单中添加 IP 地址?但我不希望它显示给我的用户。

这可能吗?

谢谢。

【问题讨论】:

  • 使用隐藏输入。然后他们必须查看源代码才能看到 IP 地址。
  • 并欺骗他们的地址...
  • php: geting ip addres的可能重复

标签: php mysql forms ip-address


【解决方案1】:

1)。您无需在表单中添加&lt;?php echo $_SERVER['REMOTE_ADDR']; ?&gt;。如果是这样,就很容易伪造(实际上任何情况都很容易)。最好在服务器端为数据添加 IP。

2) 您也可以关注$_SERVER['HTTP_X_FORWARDED_FOR']。如果用户有代理地址,其中一些(透明代理)会将真实用户的 IP 放置在那里。 $_SERVER['REMOTE_ADDR'] 可能并不总是包含正确的地址

3) 请注意:有关 IP 的数据根本不可信。

【讨论】:

  • 用户可以很容易地用这种方法欺骗一个IP地址。
  • 当然,您回答了这个问题,但操作员首先提出问题的事实表明他们可能不知道做某事的最佳方法。
  • 编辑你的答案,说这实际上不是最好的方法,我会删除我的反对意见。
  • 正如加文所说。我不知道这样做的任何方法。这就是为什么我首先问这个问题。谢谢你的帖子。
【解决方案2】:

当前的IP地址可以这样选择:

$ipaddress = $_SERVER['REMOTE_ADDR'];

【讨论】:

    【解决方案3】:

    不需要从表单中获取ip地址可以通过php的全局变量获取ip

     $ipaddress = $_SERVER['REMOTE_ADDR'];
    

    【讨论】:

    • 谁标记了这个??我正在标记它以恢复平衡。
    • 可能是给出完全相同答案但不喜欢竞争的人。
    【解决方案4】:

    为什么你还是不想打印它?你想保存发件人IP?只需使用:

    $ipaddress = $_SERVER['REMOTE_ADDR'];
    

    【讨论】:

      【解决方案5】:

      也许你会替换:

      $ipaddress = $_POST['ipaddress'];

      通过

      $ipaddress = $_SERVER['REMOTE_ADDR'];

      【讨论】:

        【解决方案6】:

        如果您将 ipaddress 添加到表单中,则用户可以根据需要更改它(即使它是隐藏元素)。您最好从请求标头中获取 ip 地址...

        $ipaddress = $_SERVER['REMOTE_ADDR']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-04-05
          • 2015-05-22
          • 1970-01-01
          • 1970-01-01
          • 2018-12-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多