/** * 以Ip地址为标志,查看当前用户是否有登陆 */ public function checkLoginStatus() { $criteria = new CDbCriteria(); $criteria->addSearchCondition('data', UtilNet::getClientIp()); $model = Session::model()->find($criteria); if ($model) { return true; } else { return false; } }
/** * 重写获取统计用户所在地区数据 * * 注:由于使用网络数据库,而获取相关数据花费时间太长,所以先把每次访问时的数据写入一个单独的文件,使用本地文件读取相关数据 */ 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); } }
/** * Add the visitor who have read this blog * @param int $id */ public function addArticleVisitorInfo($id, $interval) { $ip = UtilNet::getClientIp(); // echo $ip; // $qq = new QQWry(long2ip($ip)); // echo $qq->getDetailInfo(); $visitorInfo = Visitor::model()->find('ip = :ip AND aid = :aid', array(':ip' => $ip, ':aid' => $id)); // UtilHelper::dump($visitorInfo->attributes); if ($visitorInfo) { $visitorInfo->lasttime = time(); $visitorInfo->times++; $visitorInfo->alltime .= '|' . time(); $visitorInfo->intervals .= '|' . $interval; if (!Yii::app()->user->isGuest) { $visitorInfo->uid = Yii::app()->user->id; } UtilHelper::writeToFile($visitorInfo->attributes); // Yii::app()->end(); try { $visitorInfo->save(); } catch (Exception $e) { UtilHelper::dump($e); } } else { $visitorInfo = new Visitor(); $visitorInfo->aid = $id; $visitorInfo->ip = $ip; $visitorInfo->lasttime = time(); $visitorInfo->times = 1; $visitorInfo->intervals = $interval; if (!Yii::app()->user->isGuest) { $visitorInfo->uid = Yii::app()->user->id; } $visitorInfo->alltime = time(); $visitorInfo->refer = $_SERVER['HTTP_REFERER']; $visitorInfo->terminal = $_SERVER['HTTP_USER_AGENT']; UtilHelper::writeToFile($visitorInfo->attributes); // Yii::app()->end(); if ($visitorInfo->save()) { // echo "OK"; } else { // echo "Fail"; } } }
/** * 用户开始进入某页面,添加相关信息 * @param unknown_type $id */ public function visitStart($id, $refer) { try { $ip = ip2long(UtilNet::getClientIp()); $model = Statistics::model()->find(array('condition' => 'ip = :ip AND aid = :aid AND refer = :refer AND UNIX_TIMESTAMP( )-starttime<:interval', 'order' => 'id DESC', 'params' => array(':ip' => $ip, ':aid' => $id, ':refer' => $refer, ':interval' => 180))); UtilHelper::writeToFile($model->attributes); if ($model) { $model->endtime = time(); // UtilHelper::writeToFile(array_merge(array('提示'=>'更新'), $model->attributes), 'a+'); if ($model->save()) { echo $model->id; } } else { $model = new Statistics(); $model->aid = $id; $model->ip = $ip; $model->starttime = time(); if (!Yii::app()->user->isGuest) { $model->uid = Yii::app()->user->id; } $model->terminal = $_SERVER['HTTP_USER_AGENT']; $model->refer = $refer; // UtilHelper::writeToFile(array_merge(array('提示'=>'新加入数据'), $model->attributes), 'a+'); if ($model->save()) { echo $model->id; } } UtilHelper::writeToFile(CHtml::errorSummary($model), 'a+'); } catch (Exception $e) { echo $e->getMessage(); } }
/** * 根据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; }