Was ist cURL?
Curl ist eine Funktion oder ein Tool, das in vielen Programmiersprachen häufig verwendet wird, um HTTP-Anfragen zu senden und Daten von Webseiten oder APIs abzurufen. Mit Curl können Entwickler verschiedene Arten von Anfragen ausführen (z. B. GET, POST, PUT und DELETE) und eine Antwort von der Zielwebsite erhalten. Sie können damit Dateien herunterladen, Daten auf Server hochladen, Header-Informationen festlegen und Cookies unterstützen. Curl bietet eine flexible und effiziente Möglichkeit zur Interaktion mit Webressourcen und wird in vielen Anwendungen verwendet, einschließlich Webentwicklung, Datenintegration und Automatisierung.
Musterfunktion einer cURL Anfrage:
Die Nutzung von effektiven cURL Configs ist wichtig, deswegen bieten wir hierbei eine Musterfunktion, welche bereits voll nutzbar ist.
Funktionsumfang:
– Cookiefunktion mit externer Cookie-Text-Datei.
– Simulation eines Firefox Browsers
– Bevorzugte Browsersprache DE, anschließend EN
– Time out
function hnp_curl_get_web_page($url) { $ch = curl_init(); $hnp_cookieFile = plugin_dir_path(__FILE__) . 'cookie/hnp_cookie.txt'; $options = array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_ENCODING => "", CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0", CURLOPT_AUTOREFERER => true, CURLOPT_CONNECTTIMEOUT => 120, CURLOPT_TIMEOUT => 120, CURLOPT_MAXREDIRS => 10, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_HTTPHEADER => array( "Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7" ), CURLOPT_COOKIEFILE => $hnp_cookieFile, CURLOPT_COOKIEJAR => $hnp_cookieFile ); curl_setopt_array($ch, $options); $content = curl_exec($ch); $err = curl_errno($ch); $errmsg = curl_error($ch); $header = curl_getinfo($ch); curl_close($ch); $header['errno'] = $err; $header['errmsg'] = $errmsg; $header['content'] = $content; return $header; }
Daten aus der Funktion abrufen:
$response = hnp_curl_get_web_page($url); $content = $response['content'];
Cookies leeren durch Betätigung eines Buttons:
Funktion bereitstellen:
function hnp_empty_cookie_file() { $cookie_file_path = plugin_dir_path(__FILE__) . 'inc/cookie/hnp_cookie.txt'; file_put_contents($cookie_file_path, ''); }
Funktion abrufen:
if (isset($_POST['form_submit'])) { hnp_empty_cookie_file(); // Weitere Verarbeitung und Speichern der Daten hier // ... }
Nicht vergessen, die Daten zu filtern, um XSS und ähnliche Hacking-Methoden zu blocken.
Mit zum Beispiel der sanitize_text_field() Funktion, esc_html() Funktion oder einer simplen Filterungsfunktion:
function filter_content($content) { $filtered_content = str_replace(['<', '>'], '', $content); $filtered_content = substr($filtered_content, 0, 10000); return $filtered_content; }
Moderner Code?
Eine moderne Funktion ist auch möglich, zu beachten ist aber, dass dies dann nicht mehr mit PHP 5.6 kompatibel ist:
class WebPageFetcher { private $url; private $options; public function __construct($url) { $this->url = $url; $this->hnp_cookieFile = plugin_dir_path(__FILE__) . 'cookie/hnp_cookie.txt' $this->options = array( CURLOPT_URL => $this->url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_ENCODING => "", CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0", CURLOPT_AUTOREFERER => true, CURLOPT_CONNECTTIMEOUT => 120, CURLOPT_TIMEOUT => 120, CURLOPT_MAXREDIRS => 10, CURLOPT_COOKIEFILE => $hnp_cookieFile, CURLOPT_COOKIEJAR => $hnp_cookieFile, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_HTTPHEADER => array( "Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7" ) ); } public function fetchWebPage() { $ch = curl_init(); curl_setopt_array($ch, $this->options); $content = curl_exec($ch); $err = curl_errno($ch); $errmsg = curl_error($ch); $header = curl_getinfo($ch); curl_close($ch); $header['errno'] = $err; $header['errmsg'] = $errmsg; $header['content'] = $content; return $header; } }
Abruf der Daten:
class ReviewFetcher { private $webPageFetcher; public function __construct($url) { $this->webPageFetcher = new WebPageFetcher($url); } public function getReviews() { $response = $this->webPageFetcher->fetchWebPage(); $content = $response['content']; } // Hier gehts los }
↩ Zurück zur Blogübersicht