Ip.php 882 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. /**
  3. * Created by PhpStorm
  4. * Author: ihavoc
  5. * Date: 2020/11/22
  6. * Time: 16:46
  7. *
  8. */
  9. namespace app\api\middleware;
  10. class Ip
  11. {
  12. public function handle($request, \Closure $next)
  13. {
  14. $request->ip = $this->get_ip();
  15. return $next($request);
  16. }
  17. /*
  18. * 获取用户真实IP地址
  19. */
  20. public function get_ip()
  21. {
  22. if(!empty($_SERVER['HTTP_CLIENT_IP'])){
  23. $cip = $_SERVER['HTTP_CLIENT_IP'];
  24. }
  25. else if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
  26. $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
  27. }
  28. else if(!empty($_SERVER["REMOTE_ADDR"])){
  29. $cip = $_SERVER["REMOTE_ADDR"];
  30. }else{
  31. $cip = '';
  32. }
  33. preg_match("/[\d\.]{7,15}/", $cip, $cips);
  34. $cip = isset($cips[0]) ? $cips[0] : 'unknown';
  35. unset($cips);
  36. return $cip;
  37. }
  38. }