3

我有这个 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 地址?但我不希望它显示给我的用户。

这可能吗?

谢谢你。

4

7 回答 7

2

1)。您不需要添加<?php echo $_SERVER['REMOTE_ADDR']; ?>到表单中。如果是这样,就很容易伪造(实际上任何情况都很容易)。更好地将 IP 添加到服务器端的数据中。

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

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

于 2013-10-26T20:00:49.123 回答
2

也许你会替换:

$ipaddress = $_POST['ipaddress'];

经过

$ipaddress = $_SERVER['REMOTE_ADDR'];

于 2013-10-26T20:02:43.367 回答
1

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

 $ipaddress = $_SERVER['REMOTE_ADDR'];
于 2013-10-26T20:01:29.970 回答
1

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

$ipaddress = $_SERVER['REMOTE_ADDR']
于 2013-10-26T20:04:46.563 回答
0

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

$ipaddress = $_SERVER['REMOTE_ADDR'];
于 2013-10-26T20:01:01.780 回答
0

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

$ipaddress = $_SERVER['REMOTE_ADDR'];
于 2013-10-26T20:01:55.690 回答
0

您可以使用以下代码获取IP 地址

$ipaddress = $_SERVER['REMOTE_ADDR'];
于 2022-02-18T08:19:36.600 回答