/** * 重写获取统计用户所在地区数据 * * 注:由于使用网络数据库,而获取相关数据花费时间太长,所以先把每次访问时的数据写入一个单独的文件,使用本地文件读取相关数据 */ public function actionRewriteRegion() { set_time_limit(0); ignore_user_abort(true); $file = Yii::app()->params->visitIpPath; $fp = fopen($file, 'w+'); $model = Comments::model()->findAll(); foreach ($model as $data) { $local = UtilNet::getIPLoc($data->comment_author_IP); fwrite($fp, $local->country . "\t" . $local->province . "\t" . $local->city . "\r\n"); // UtilHelper::dump($local); // $province = $local->province; /// $city = $local->city; // echo $province.$city; } fclose($fp); // $provinceModel = Region::model()->getProvinceByName($province); // UtilHelper::dump($provinceModel); // $cityModel = Region::model()->getManicipalByName($city, $provinceModel->id); }
/** * 检查登录状态 */ public function actionCheckLoginState() { $username = $_GET['username']; $string = 's:' . strlen($username) . ':"' . $username . '"'; $criteria = new CDbCriteria(); $criteria->addSearchCondition('data', $string); $model = Sessions::model()->find($criteria); if ($model) { $session = UtilSession::parseSession(Yii::app()->session->readSession($model->id)); $ip = $session['loginIp']; // $ip = '125.68.51.203'; $region = UtilNet::getIPLoc($ip); $result = array('id' => $model->id, 'msg' => "<b>检测到您的帐号当前已经在" . $region->province . '.' . $region->city . '.' . $region->district . "登录</b><br />是否要注销,重新登录"); echo json_encode($result); } else { $result = array('msg' => 'false'); echo json_encode($result); } }
/** * 根据IP地址获取当前所在地区 * Enter description here ... */ public function getAreaModel() { $queryIP = "182.128." . rand(10, 244) . ".21"; // $queryIP = strval(rand(10, 244).'.'.rand(10, 244).'.'.rand(10, 244).'.'.rand(10, 244)); // echo $queryIP; // $queryIP = UtilNet::getClientIp(); $local = UtilNet::getIPLoc($queryIP); // UtilHelper::dump($local); // UtilHelper::writeToFile($local); $province = $local->province; $city = $local->city; // echo $province.$city; $provinceModel = Region::model()->getProvinceByName($province); // UtilHelper::dump($provinceModel); $cityModel = Region::model()->getManicipalByName($city, $provinceModel->id); if ($cityModel) { $model = $cityModel; } elseif ($provinceModel && !$cityModel) { $model = $provinceModel; } return $model; }