我们可以在不使用数据库的情况下找到客户端位置,为此我们需要使用一些 api,例如我使用了主机 api。
控制器代码:
$clientIpAddress = $this->request->clientIp();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://api.hostip.info/get_html.php?ip=$clientIpAddress&position=true");
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
$data 将返回以下示例:Country: UNITED STATES (US) City: Aurora, TX Latitude: 33.0582 Longitude: -97.5159 IP: 12.215.42.19
所以你从这个 $data 中得到了位置。
在视图文件中使用它,如下所示:
$this->Time->format('F jS, Y h:i A',date('M d, Y h:i:s'), null,'Aurora, TX');
但是不要忘记在会话中写入城市名称、IP 地址值,因此无需在每次为单个用户加载页面时发送 curl 请求。只是第一次找到位置和IP地址并在会话中写入然后使用它