The ultimate all in one PHP cURL function that saves the hassle of building a requester/setter/getter script that is cURL.
The idea behind the function was to cater for a variety of options whilst still being simple to set and run.
An example of this is a simple GET request that has no authentication, all you need to set is the URL like:
doCurl('https://theurl.com/api/request');
Or you can use the full parameters to set headers, user agents and referrers.
With doCurl()
you can:
- Send GET, POST and DELETE requests
- Set and include headers
- Set post fields
- Set user agent
- Set referrer
- Set follow request
- Set use SSL
- Set connection timeout
- Set timeout
Upon a successful response code of 200 the data response will be returned, else an array stating the non 200 response will be returned.
Code Gist:
<?php function doCurl(string $url, string $type = 'GET', array $headers = [], array $post_fields = [], string $user_agent = '', string $referrer = '', bool $follow = true, bool $use_ssl = false, int $con_timeout = 10, int $timeout = 40) { $crl = curl_init($url); curl_setopt($crl, CURLOPT_CUSTOMREQUEST, $type); curl_setopt($crl, CURLOPT_USERAGENT, $user_agent); curl_setopt($crl, CURLOPT_REFERER, $referrer); if ($type == 'POST') { curl_setopt($crl, CURLOPT_POST, true); if (!empty($post_fields)) { curl_setopt($crl, CURLOPT_POSTFIELDS, $post_fields); } } if (!empty($headers)) { curl_setopt($crl, CURLOPT_HTTPHEADER, $headers); } curl_setopt($crl, CURLOPT_FOLLOWLOCATION, $follow); curl_setopt($crl, CURLOPT_CONNECTTIMEOUT, $con_timeout); curl_setopt($crl, CURLOPT_TIMEOUT, $timeout); curl_setopt($crl, CURLOPT_SSL_VERIFYHOST, $use_ssl); curl_setopt($crl, CURLOPT_SSL_VERIFYPEER, $use_ssl); curl_setopt($crl, CURLOPT_RETURNTRANSFER, true); $call_response = curl_exec($crl); $http_response_code = curl_getinfo($crl, CURLINFO_HTTP_CODE); curl_close($crl); if ($http_response_code == 200) { return $call_response;//Return data } else { return array('http_response_code' => $http_response_code);//Call failed } }