UserFrom.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <?php
  2. /*
  3. * FecShop file.
  4. *
  5. * @link http://www.fecmall.com/
  6. * @copyright Copyright (c) 2016 FecShop Software LLC
  7. * @license http://www.fecmall.com/license/
  8. */
  9. namespace fecshop\services;
  10. use Yii;
  11. /**
  12. * Order services.
  13. *
  14. * @property \fecshop\services\order\Item $item
  15. *
  16. * @author Terry Zhao <2358269014@qq.com>
  17. * @since 1.0
  18. */
  19. class UserFrom extends Service
  20. {
  21. protected $_userFromModelName = '\fecshop\models\mysqldb\UserFrom';
  22. protected $_userFromModel;
  23. public function init()
  24. {
  25. parent::init();
  26. list($this->_userFromModelName, $this->_userFromModel) = \Yii::mapGet($this->_userFromModelName);
  27. }
  28. public function getSystemLogModel(){
  29. return $this->_userFromModel;
  30. }
  31. public function getPrimaryKey()
  32. {
  33. return 'id';
  34. }
  35. /**
  36. * @param $data
  37. * @return bool
  38. * Save user_from_data
  39. */
  40. public function saveUserData($data){
  41. if(!is_array($data)){
  42. Yii::$service->helper->errors->add('UserFromData is not exist', '1');
  43. return false;
  44. }
  45. $user_ip = $data['user_ip'];
  46. $user_url = $data['user_url'];
  47. $user_from_url = $data['user_from_url'];
  48. $user_browser = $data['user_browser'];
  49. $user_from_time = date("Y-m-d H:i:s",time());
  50. $model = new $this->_userFromModelName();
  51. $model->user_ip = $user_ip;
  52. $model->user_url = $user_url;
  53. $model->user_from_url = $user_from_url;
  54. $model->user_from_time = $user_from_time;
  55. $model->user_browser = $user_browser;
  56. $model->save();
  57. return true;
  58. }
  59. /**
  60. * @param $where
  61. * @return bool
  62. * get user from data
  63. */
  64. public function getUserData($where){
  65. if(!is_array($where)){
  66. Yii::$service->helper->errors->add('UserFromDataWhere is not exist', '1');
  67. return false;
  68. }
  69. $query = $this->_userFromModel->find()->asArray();
  70. $query->where($where);
  71. $data = $query->all();
  72. return $data;
  73. }
  74. public function savePageData(){
  75. $data = array();
  76. $data['user_ip'] = $this->getIp();
  77. $data['user_url'] = $this->getUrl();
  78. $data['user_from_url'] = $this->getFromUrl();
  79. $data['user_browser'] = $this->getBrowser();
  80. $this->saveUserData($data);
  81. }
  82. public function getIp(){
  83. $ip=false;
  84. if(!empty($_SERVER["HTTP_CLIENT_IP"])){
  85. $ip = $_SERVER["HTTP_CLIENT_IP"];
  86. }
  87. if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  88. $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
  89. if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
  90. for ($i = 0; $i < count($ips); $i++) {
  91. if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
  92. $ip = $ips[$i];
  93. break;
  94. }
  95. }
  96. }
  97. return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
  98. }
  99. public function getIpContent($url){
  100. $headerArray =array("Content-type:application/json;","Accept:application/json");
  101. $ch = curl_init();
  102. curl_setopt($ch, CURLOPT_URL, $url);
  103. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  104. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  105. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  106. curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray);
  107. $output = curl_exec($ch);
  108. curl_close($ch);
  109. $output = json_decode($output,true);
  110. return $output;
  111. }
  112. public function getBrowser(){
  113. $agent=$_SERVER["HTTP_USER_AGENT"];
  114. if(strpos($agent,'MSIE')!==false || strpos($agent,'rv:11.0'))
  115. return "ie";
  116. else if(strpos($agent,'Firefox')!==false)
  117. return "firefox";
  118. else if(strpos($agent,'Chrome')!==false)
  119. return "chrome";
  120. else if(strpos($agent,'Opera')!==false)
  121. return 'opera';
  122. else if((strpos($agent,'Chrome')==false)&&strpos($agent,'Safari')!==false)
  123. return 'safari';
  124. else
  125. return 'unknown';
  126. }
  127. public function getFromUrl(){
  128. if(isset($_SERVER['HTTP_REFERER']))
  129. return $_SERVER['HTTP_REFERER'];
  130. else if(strpos($_SERVER['QUERY_STRING'], '?'))
  131. return $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
  132. else
  133. return $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  134. }
  135. public function getUrl(){
  136. return $_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
  137. }
  138. }