Was hoping someone can point out where I am going wrong here.
Just testing so code is rather sloppy.
Related to GeoIP City / Country Location. (data is in my database, not a web call)
$address = $this->my_ip2long($_SERVER['REMOTE_ADDR']);
Calls this:
private function my_ip2long($ip){
$nums = explode('.', $ip);
$ret = 0;
for ($i=0; $i<4; $i++){
$ret += intval($nums[$i]) * pow(256, 3-$i);
}
return $ret;
}
So $address = (int) 2393010516
So far so good. $current_address = ClassRegistry::init('IpCountry')->__findUserCountry();
Produces:array( 'IpCountry' => array( 'id' => '38959', 'ip_from' => '2391343104', 'ip_to' => '2394947583', 'country2' => 'CA', 'country3' => 'CAN', 'country' => 'CANADA' Which is correct I am in Canada. So I put that function inside __FindUserCountry(); all good so far. Then$location = ClassRegistry::init('GeoCityBlock')->find('first', array(
'conditions' => array(
'and' => array(
array(
'startIpNum <' => $address,
'endIpNum >' => $address))),
'limit' => 1,
'contain' => array(
'GeoCityLocation')));
And presto time travel :0 I am now in Seoul Korea. array( 'GeoCityBlock' => array( 'startIpNum' => '23068672', 'endIpNum' => '24117247', 'locId' => '22883' ), 'GeoCityLocation' => array( (int) 0 => array( 'locId' => '22883', 'country' => 'KR', 'region' => '11', 'city' => 'Seoul', 'postalCode' => '', 'latitude' => '37.5985', 'longitude' => '126.9783', 'metroCode' => '', 'areaCode' => '' ) ) Anyone have any assistance they could provide would be great. Thanks, Dave
No comments:
Post a Comment