Somehow $_SERVER['REMOTE_ADDR']
returns an empty string, i have the same code (as part of a script) running on multiple servers and it works everywhere else, they are all the same setup.
The weird thing is, when I restart apache and load the page, it works exactly once, if I reload the site + all the times after that, it's empty. I've had other people try, same result, empty.
someone suggested it was something with IPv6 configuration, I have now completely disabled IPv6 but the problem persists.
if you're behind a proxy server, you can use $_SERVER['HTTP_X_FORWARDED_FOR']
or $_SERVER['HTTP_CLIENT_IP']
instead of $_SERVER['REMOTE_ADDR']
.
this will depends on how your proxy is configured.
Yes it's possible for REMOTE_ADDR to be empty. so if you want you can use this code that I use to get the ip based on HTTP_X_FORWARDED_FOR
<?php
if(! empty($_SERVER['REMOTE_ADDR']) ){
$ip = $_SERVER['REMOTE_ADDR'];
}
else{
$ip = empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? '' : $_SERVER['HTTP_X_FORWARDED_FOR'];
}
I'm checking REMOTE_ADDR first as it is more reliable and sometimes HTTP_X_FORWARDED_FOR can be spoofed by users
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With