Curl.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\libs\helpers;
  3. class Curl
  4. {
  5. /**
  6. * @desc curl请求
  7. *
  8. * @param string $method
  9. * @param string $data
  10. *
  11. * @return bool|mixed
  12. */
  13. public static function requestCurl($url, $method = 'GET', $header = [], $data = '')
  14. {
  15. $ch = curl_init();
  16. if ($header) {
  17. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  18. }
  19. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  20. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  21. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
  22. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  23. curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
  24. if ('POST' === $method) {
  25. curl_setopt($ch, CURLOPT_POST, true);
  26. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  27. curl_setopt($ch, CURLOPT_URL, $url);
  28. } else {
  29. if ($data) {
  30. $url = $url . '?' . $data;
  31. }
  32. curl_setopt($ch, CURLOPT_URL, $url);
  33. }
  34. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  35. $result = curl_exec($ch);
  36. if (curl_errno($ch)) {
  37. curl_close($ch);
  38. $errorNo = curl_errno($ch);
  39. $error = curl_error($ch);
  40. throw new \Exception('curl出错,错误码: ' . $errorNo . ',错误信息:' . $error);
  41. }
  42. curl_close($ch);
  43. return $result;
  44. }
  45. /**
  46. * @desc 获取IP
  47. */
  48. private static function ip()
  49. {
  50. $ip = 'unknown';
  51. if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
  52. $ip = getenv('HTTP_CLIENT_IP');
  53. } elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
  54. $ip = getenv('HTTP_X_FORWARDED_FOR');
  55. } elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
  56. $ip = getenv('REMOTE_ADDR');
  57. } elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
  58. $ip = $_SERVER['REMOTE_ADDR'];
  59. }
  60. return preg_match('/[\d\.]{7,15}/', $ip, $matches) ? $matches[0] : $ip;
  61. }
  62. }