Example #1
0
 /**
  * 以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);
 }
Example #3
0
 /**
  * 检查登录状态
  */
 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);
     }
 }
Example #4
0
 /**
  * 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";
         }
     }
 }
Example #5
0
 /**
  * 用户开始进入某页面,添加相关信息
  * @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();
     }
 }
Example #6
0
 /**
  * 根据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;
 }