19- PHP cURL Kullanımı

cURL Nedir?

cURL, PHP'de sunucu üzerindeki veya başka bir sunucudaki URL'lerle etkileşimde bulunmak için kullanılan bir kütüphanedir. cURL, HTTP, HTTPS, FTP, FTPS gibi farklı protokollerle veri alışverişi yapabilir. Bu ders notları, cURL ile temel HTTP isteklerinin nasıl yapılacağını ve gelişmiş özelliklerin nasıl kullanılacağını anlatmaktadır.

1. Temel cURL İstekleri

GET İsteği:

<?php
// cURL özkaynağını başlatma
$ch = curl_init();

// cURL ayarlarını yapılandırma
curl_setopt($ch, CURLOPT_URL, "https://api.example.com/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// GET isteği gönderme
$response = curl_exec($ch);

// cURL özkaynağını kapatma
curl_close($ch);

// Yanıtı işleme
echo $response;
?>

POST İsteği:

<?php
// cURL özkaynağını başlatma
$ch = curl_init();

// cURL ayarlarını yapılandırma
curl_setopt($ch, CURLOPT_URL, "https://api.example.com/post");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, ["parametre" => "değer"]);

// POST isteği gönderme
$response = curl_exec($ch);

// cURL özkaynağını kapatma
curl_close($ch);

// Yanıtı işleme
echo $response;
?>

2. Header ve Diğer Ayarlar

Özel Header Gönderme:

<?php
// cURL özkaynağını başlatma
$ch = curl_init();

// cURL ayarlarını yapılandırma
curl_setopt($ch, CURLOPT_URL, "https://api.example.com/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer my_access_token"]);

// GET isteği gönderme
$response = curl_exec($ch);

// cURL özkaynağını kapatma
curl_close($ch);

// Yanıtı işleme
echo $response;
?>

Zaman Aşımı Ayarı:

<?php
// cURL özkaynağını başlatma
$ch = curl_init();

// cURL ayarlarını yapılandırma
curl_setopt($ch, CURLOPT_URL, "https://api.example.com/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // Zaman aşımı süresi: 10 saniye

// GET isteği gönderme
$response = curl_exec($ch);

// cURL özkaynağını kapatma
curl_close($ch);

// Yanıtı işleme
echo $response;
?>

3. cURL ile Dosya İndirme ve Yükleme

Dosya İndirme:

<?php
// cURL özkaynağını başlatma
$ch = curl_init();

// cURL ayarlarını yapılandırma
curl_setopt($ch, CURLOPT_URL, "https://www.example.com/image.jpg");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// İndirilen dosyayı diske kaydetme
file_put_contents("image.jpg", curl_exec($ch));

// cURL özkaynağını kapatma
curl_close($ch);
?>

Dosya Yükleme:

<?php
// cURL özkaynağını başlatma
$ch = curl_init();

// cURL ayarlarını yapılandırma
curl_setopt($ch, CURLOPT_URL, "https://api.example.com/upload");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);

// Yüklenecek dosyayı belirleme
$post_data = ['file' => curl_file_create('local_file.jpg')];
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

// POST isteği gönderme
$response = curl_exec($ch);

// cURL özkaynağını kapatma
curl_close($ch);

// Yanıtı işleme
echo $response;
?>

4. Hata Kontrolü ve İleri Seviye Konular

Hata Kontrolü:

<?php
// cURL özkaynağını başlatma
$ch = curl_init();

// cURL ayarlarını yapılandırma
curl_setopt($ch, CURLOPT_URL, "https://api.example.com/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// GET isteği gönderme
$response = curl_exec($ch);

// Hata kontrolü
if (curl_errno($ch)) {
echo 'cURL Hatası: ' . curl_error($ch);
} else {
// Yanıtı işleme
echo $response;
}

// cURL özkaynağını kapatma
curl_close($ch);
?>