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

phpのグローバル変数でipを取得できるフォームから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 に答える