192.168.33.1だとgeoliteがエラーになるので、198.7.31.23にします。
$data = array("date"=>date("Y-m-d H:i:s")); $audience = $_POST['userdata']; $mongo = "app.na".$audience[0][1]; $audience = array_splice($audience, 1); $ip_addr = $audience[0][1]; if($ip_addr == "192.168.33.1"){ $ip_addr = "198.7.31.23"; } foreach($audience as $value){ $data += array($value[0]=>$value[1]); } require_once '../geolite/vendor/autoload.php'; use GeoIp2\Database\Reader; $reader = new Reader('../geolite/GeoLite2-City.mmdb'); $record = json_decode(json_encode($reader->city($ip_addr))); $continent = $record->continent->names->en; $contry = $record->country->names->en; $city = $record->city->names->en; $data = $data + array('continent'=>$continent, 'contry'=>$contry, 'city'=>$city); var_dump($data); $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $bulk = new MongoDB\Driver\BulkWrite; $bulk->insert($data); $mng->executeBulkWrite($mongo, $bulk); echo "finished!!!";
取得できています。
mongoDBにもはいってます。
-geoliteがエラーの時の為に、try catch (Exception $e) に変えると、以下の分岐条件は削除できます。
if($ip_addr == "192.168.33.1"){ $ip_addr = "198.7.31.23"; }
ipの地理情報はmongoDBには入りません。
因みに、Chrom extensionでBetternet Unlimited Free VPN ProxyやHotspot Shieldなどを使うとIPアドレスを偽造できるようです。
次は、表示側を作ります。
flexを入れ子にしたレイアウトにします。