RE: Ip-to-country
| From: | Jacques Marneweck | Date: | Tue, 06 May 2003 00:21:28 +0000 |
| Subject: | RE: Ip-to-country | ||
| References: | 1 | Groups: | php.mirrors |
| Request: | Send a blank email to php-mirrors+get-17348@lists.php.net to get a copy of this message | ||
Hi Jim,
I have a fix for the proxy stuff. It seems to work in my test
environment, will unleash it in a bit into cvs.
Basically it ignores IP's defined in RFC 1918 namely:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
root@mimbari:~/directi# php -q locateperson.php --i-want-extra-debugging
"10.0.10.1, 172.16.22.22, 192.168.0.199, 192.168.2.2, 192.168.253.13,
196.7.86.77, 196.7.86.78, 196.30.76.3" "207.126.232.175"
Array
(
[0] => 10.0.10.1
[1] => 172.16.22.22
[2] => 192.168.0.199
[3] => 192.168.2.2
[4] => 192.168.253.14
[5] => 196.7.86.77
[6] => 196.7.86.78
[7] => 196.30.76.3
)
skipping 10.0.10.1
skipping 172.16.22.22
skipping 192.168.0.199
skipping 192.168.2.2
skipping 192.168.253.14
lookingup 196.7.86.77
[directi] Person is located in South Africa
Works nicely with my php CLI testing tools.
I'll commit it shortly.
Regards
--jm
> -----Original Message-----
> From: Jim Winstead [mailto:jimw@apache.org]
> Sent: Tuesday, May 06, 2003 1:06 AM
> To: Rasmus Lerdorf
> Cc: Sandeep S.; Divyank Turakhia; 'Gabor Hojtsy'; webmaster@php.net;
> systems@php.net
> Subject: Re: Ip-to-country
>
>
> On Mon, May 05, 2003 at 03:49:02PM -0700, Rasmus Lerdorf wrote:
> > My request from the office looks like this:
> >
> > [ snip ]
> > X-Forwarded-For: 207.126.232.175
>
> so when the request hits the squid on php.net, it will get
> forwarded to
> the back-end apache, and this header will end up looking like one of:
>
> X-Forwarded-For: 207.126.232.175,22.22.22.22
> X-Forwarded-For: 22.22.22.22,207.126.232.175
>
> (where 22.22.22.22 is the remote address of your local proxy. i forget
> the order which it ends up using.)
>
> this confuses this line in ip-to-country.inc:
>
> $ipnum = (float) sprintf("%u",
> ip2long($_SERVER['HTTP_X_FORWARDED_FOR']));
>
> (it returns 4294967295, or 255.255.255.255.)
>
> i ran into the same thing in implementing this with the geoip
> data. that
> code needs to just pick out the correct ip address from an
> X-Forward-For
> header that has more than one.
>
> jim
>