可能重複:
How do I find a user's IP address with PHP?PHP - 獲取公網IP
我有我的PHP頁面的表單。用戶填寫他的憑證和消息並按下發送。我通過電子郵件得到他的問題,並可以回答他。
但是我也想把這個人的公共IP加入到郵件中,這可能嗎?
非常感謝!
可能重複:
How do I find a user's IP address with PHP?PHP - 獲取公網IP
我有我的PHP頁面的表單。用戶填寫他的憑證和消息並按下發送。我通過電子郵件得到他的問題,並可以回答他。
但是我也想把這個人的公共IP加入到郵件中,這可能嗎?
非常感謝!
嘗試使用$_SERVER['REMOTE_ADDR']
來獲取用戶的IP地址。
在我的本地網站上,我得到127.0.0.1。我無法在我的本地網站上獲得我的公共IP。 – 2012-09-07 09:40:23
您可以使用下面的代碼:
$ip = $REMOTE_ADDR;
你不應該依靠註冊全局變量來開啓。 – 2011-06-08 22:04:29
我認爲這需要'register_globals' – 2011-06-08 22:04:53
您可以使用$_SERVER["REMOTE_ADDR"]
。但它不一定可靠。
我不知道任何欺騙REMOTE_ADDR鍛造IP數據包的方法。但是,值得注意的是,REMOTE_ADDR可能是代理的地址(即使是你自己設置的),而不是遠程用戶。例如,我在npache前面有nginx,所以apache收到的REMOTE_ADDR就是我的nginx服務器。 – 2011-06-08 22:06:22
@Frank:這大概是我暗示的! – 2011-06-08 22:07:45
您可以使用$_SERVER['REMOTE_ADDR']
但如果你真的想確保你得到正確的IP,而不是代理IP,然後我發現這個功能是有幫助的
注:我不是這個代碼的擁有者,我發現它在互聯網上的某處
function get_real_ip()
{
if (isset($_SERVER["HTTP_CLIENT_IP"]))
{
return $_SERVER["HTTP_CLIENT_IP"];
}
elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
{
return $_SERVER["HTTP_X_FORWARDED_FOR"];
}
elseif (isset($_SERVER["HTTP_X_FORWARDED"]))
{
return $_SERVER["HTTP_X_FORWARDED"];
}
elseif (isset($_SERVER["HTTP_FORWARDED_FOR"]))
{
return $_SERVER["HTTP_FORWARDED_FOR"];
}
elseif (isset($_SERVER["HTTP_FORWARDED"]))
{
return $_SERVER["HTTP_FORWARDED"];
}
else
{
return $_SERVER["REMOTE_ADDR"];
}
}
是的,請讓這些代碼片段流行起來,這樣很容易欺騙郵件腳本。 – hakre 2011-06-08 22:16:22
所有'$ _SERVER [「HTTP _ *」]'變量都是微不足道的。 – 2011-06-08 22:21:10
有效的點,但真正的工作是什麼?我個人保存'$ _SERVER [「REMOTE_ADDR」]'和任何其他轉發類型var我可以找到。 – 2011-06-08 22:29:07
你爲什麼要這樣做? – 2011-06-08 22:02:45