Locator.class.php
916 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
/**
* User: graymur
* Date: 06.11.13
* Time: 16:06
*/
namespace Cpeople\Classes\Geolocation;
abstract class Locator implements LocatorInterface
{
protected $ip;
public function __construct()
{
$this->setIP($this->detectIP());
}
private function detectIP()
{
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_REAL_IP', 'HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR') as $key)
{
if (!empty($_SERVER[$key]))
{
return $_SERVER[$key];
}
}
}
public function setIP($ip)
{
if (!filter_var($ip, FILTER_VALIDATE_IP))
{
throw new GeoLocException('Invalid IP');
}
$this->ip = $ip;
}
}
interface LocatorInterface
{
/**
* @return \Cpeople\Classes\Geolocation\Result $result
*/
function locate();
}