Diese Anleitung zeigt Ihnen, wie Sie innerhalb weniger Zeilen PHP Code einen einfachen CURL Request mit POST Parametern erstellen und diesen auslesen können.

In diesem Beispiel möchte ich von Uptime-Robot via POST Parametern die Uptime von einer meiner Websites überprüfen.

Zuerst wird die URL festgelegt, auf der wir die Abfrage durchführen wollen:

$url = 'https://api.uptimerobot.com/v2/getMonitors?format=json';

Die GET Parameter werden direkt mit in die URL geschrieben, in diesem Fall „getMonitors“ und in welchem Format wir die Daten haben wollen. In diesem Falle „json“.

Jetzt definieren wir die POST Parameter, die wir mitgeben wollen/müssen. Diese dienen z.B. zur Verifizierung:

$data = array(	
   'api_key' => 'ur2c235-5555132g20f2agg24c2c', 
   'monitors' => '113224226', 
   'all_time_uptime_ratio' => '1'
);

In diesem Beispiel geben wir unseren generierten API Key mit, und die ID des Monitors, die wir vorher ausgelesen haben (Das geht, wenn man keine Monitor-ID hinterlegt).

Nun führen wir mit CURL die Abfrage durch:

$curl = curl_init($url);
    	curl_setopt($curl, CURLOPT_POST, true);
    	curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
    	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    	$response = curl_exec($curl);
    	curl_close($curl);

Zum Schluss schließen wir die Verbindung wirder mit curl_close(name). Die Abfrage kann jetzt bereits mit print_r ausgegeben werden. Wir möchten jetzt aber mit REGEX einfach mal unsere „All-Time-Uptime-Ratio“ auslesen:

$re = '/"all_time_uptime_ratio":"(.*?)"/m';
preg_match_all($re, $response, $matches, PREG_SET_ORDER, 0);

echo $matches[0][1];

Hier nochmal der gesamte Code für die Faulen C&Pler 😉

$url = 'https://api.uptimerobot.com/v2/getMonitors?format=json';
$data = array(
    'api_key' => 'ur755945-5965161d20f16254233c96c', 
    'monitors' => '24124432', 
    'all_time_uptime_ratio' => '1'
);
$curl = curl_init($url);
    	curl_setopt($curl, CURLOPT_POST, true);
    	curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
    	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    	$response = curl_exec($curl);
    	curl_close($curl);
		
$re = '/"all_time_uptime_ratio":"(.*?)"/m';
preg_match_all($re, $response, $matches, PREG_SET_ORDER, 0);
echo $matches[0][1];

Wer auch gerne REGEX lernen möchte, kann dies am besten mit regex101.com tun.


Lukas Dörr

Fachinformatiker Anwendungsentwicklung Plesk Enthusiast, YouTuber, Twitterer und Typo3 Entwicklererer