Reputation: 19
I want to show the IP address of the computer's client. But in my computer which running in localhost show only "::1" . If i run in the localhost, it should be show 127.0.0.1. So how to show the IP address especially in IPv4. Because I read in another article that the ::1 is in IPv6. Here is my code :
function get_ip()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
$ip = get_ip();
echo $ip;
Give me help to fix this. Thank You.
Upvotes: 0
Views: 7768
Reputation: 1
function getIP() {
$ip = $_SERVER['SERVER_ADDR'];
if (PHP_OS == 'WINNT'){
$ip = getHostByName(getHostName());
}
if (PHP_OS == 'Linux'){
$command="/sbin/ifconfig";
exec($command, $output);
$pattern = '/inet addr:?([^ ]+)/';
$ip = array();
foreach ($output as $key => $subject) {
$result = preg_match_all($pattern, $subject, $subpattern);
if ($result == 1) {
if ($subpattern[1][0] != "127.0.0.1")
$ip = $subpattern[1][0];
}
}
}
return $ip;
}
echo getIP();
Upvotes: 0
Reputation: 169018
If you want the web server to see you connecting from 127.0.0.1 then you must connect via IPv4. Try navigating to http://127.0.0.1
instead of http://localhost
. If you are connecting via IPv6 then of course the web server will report an IPv6 address.
Upvotes: 1