Utils.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace common\helpers;
  3. use Yii;
  4. class Utils
  5. {
  6. public static function getTopDomain()
  7. {
  8. $hostInfo = Yii::$app->getRequest()->getHostInfo();
  9. $host = parse_url($hostInfo, PHP_URL_HOST);
  10. $hostArr = explode('.', $host);
  11. $hostArr = array_reverse($hostArr);
  12. if (count($hostArr) >= 2) {
  13. return "{$hostArr[1]}.{$hostArr[0]}";
  14. } else {
  15. return $host;
  16. }
  17. }
  18. public static function formatFloatOrInt($number, $decimals = 2)
  19. {
  20. if (!is_numeric($number)) {
  21. return $number;
  22. }
  23. if (intval($number) == $number) {
  24. return intval($number);
  25. } else {
  26. return number_format($number, $decimals, '.', '');
  27. }
  28. }
  29. /**
  30. * 获取客户端IP地址
  31. * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
  32. * @return mixed
  33. */
  34. public static function getClientIp($type = 0)
  35. {
  36. $type = $type ? 1 : 0;
  37. static $ip = NULL;
  38. if ($ip !== NULL) return $ip[$type];
  39. if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  40. $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
  41. $pos = array_search('unknown', $arr);
  42. if (false !== $pos) unset($arr[$pos]);
  43. $ip = trim($arr[0]);
  44. } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
  45. $ip = $_SERVER['HTTP_CLIENT_IP'];
  46. } elseif (isset($_SERVER['REMOTE_ADDR'])) {
  47. $ip = $_SERVER['REMOTE_ADDR'];
  48. }
  49. // IP地址合法验证
  50. $long = sprintf("%u", ip2long($ip));
  51. $ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
  52. return $ip[$type];
  53. }
  54. }