Curl.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace App\libs\helpers;
  3. class Curl
  4. {
  5. /*
  6. * @desc curl请求
  7. * @param $url
  8. * @param string $method
  9. * @param mixed $header
  10. * @param string $data
  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 ($method == 'POST') {
  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. } else {
  42. curl_close($ch);
  43. return $result;
  44. }
  45. }
  46. /**
  47. * @desc 获取IP
  48. */
  49. private static function ip()
  50. {
  51. $ip = "unknown";
  52. if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
  53. $ip = getenv('HTTP_CLIENT_IP');
  54. } elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
  55. $ip = getenv('HTTP_X_FORWARDED_FOR');
  56. } elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
  57. $ip = getenv('REMOTE_ADDR');
  58. } elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
  59. $ip = $_SERVER['REMOTE_ADDR'];
  60. }
  61. return preg_match('/[\d\.]{7,15}/', $ip, $matches) ? $matches[0] : $ip;
  62. }
  63. }