我有这个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地址?但我不希望这个显示给我的用户。
这可能吗?
谢谢。
答案 0 :(得分:2)
1)。您不需要在表单中添加<?php echo $_SERVER['REMOTE_ADDR']; ?>
。如果是这样的话很容易伪造它(实际上它很容易)。最好在服务器端为数据添加IP。
2)您也可以查看$_SERVER['HTTP_X_FORWARDED_FOR']
。如果用户具有代理地址,则其中一些(透明代理)将真实用户的IP放在那里。 $_SERVER['REMOTE_ADDR']
可能并不总是包含正确的地址
3)请注意:有关IP的数据根本不值得信赖。
答案 1 :(得分:1)
您不需要从PHP的全局变量
获取ip的表单中获取IP地址 $ipaddress = $_SERVER['REMOTE_ADDR'];
答案 2 :(得分:1)
也许你会替换:
$ ipaddress = $ _POST ['ipaddress'];
通过
$ ipaddress = $ _SERVER ['REMOTE_ADDR'];
答案 3 :(得分:1)
如果您在表单中添加ip地址,则用户可以根据需要进行更改(即使是隐藏元素)。你最好从请求标题中获取ip地址......
$ipaddress = $_SERVER['REMOTE_ADDR']
答案 4 :(得分:0)
当前的Ip-address可以这样获得:
$ipaddress = $_SERVER['REMOTE_ADDR'];
答案 5 :(得分:0)
为什么你不打算打印呢?你想保存发件人IP?只需使用:
$ipaddress = $_SERVER['REMOTE_ADDR'];