我正在用PHP创建一个表单,我想记录用户的IP地址.这是我使用的代码片段:
<input type="hidden" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" />
Run Code Online (Sandbox Code Playgroud)
当我在XAMPP中打开代码并读取源代码时,该值的IP地址与我的不同:
<input type="hidden" name="ip" value="::1" />
Run Code Online (Sandbox Code Playgroud)
当我在localhost(XAMPP)中使用它时,通常会发生此IP地址吗?
如果没有,是否有任何替代方法来获取用户的IP地址?
Ale*_*s G 25
IP ::1是IPv6版本中的"localhost".您的计算机配置了IPv6 - 因此您将获得此IP地址.也许,当您在实时服务器上部署应用程序时,将不会在服务器上配置IPv6,并且您的应用程序将获得更熟悉的IPv4地址(例如aaa.bbb.ccc.ddd).
另一方面,$_SERVER['REMOTE_ADDR']可能并不总是包含正确的地址.最好使用:
if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip_address = $_SERVER['REMOTE_ADDR'];
}
Run Code Online (Sandbox Code Playgroud)
Que*_*tin 18
<input type="hidden" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" />
不要那样做.从$_SERVER表单提交时获取请求.在生成表单并将其存储在表单中时获取它只会让人们有机会更改它.
Does this IP address normally happen when I use it in a localhost (XAMPP)?
是.从localhost请求页面时,获取本地IP(IPv6)地址是正常的.