a
Kadir KILIÇ
3 saat önce0 Yorum

PHP Curl Fonksiyonu Kullanımı

PHP Curl Fonksiyonu kullanarak başka web sitelerinden veri gönderebilir veya çekebilirsiniz. Genelde bot yapmak ve birçok farklı işlemlerde kullanılmakta. PHP Curl fonksiyonu ile aynı zamanda POST ve GET ile veri gönderebilirsiniz.

Örneğin bir doviz sitesinden haber sitenize doviz kurlarını çekeceksiniz, bunu elinizle anlık olarak değiştirmeniz imkansız çünkü saniye bazında bile değişikler olabiliyor. Bu yüzden curl kütüphanesi ile verileri alabilirsiniz.

PHP.NET Curl Kütüphanesi

İsterseniz php.net’in yayımladığı PHP Curl Kütüphanesinden de yararlanabilirsiniz.

Curl Fonksiyonu Mantığı

Curl Fonksiyonu mantığı ilk olarak siteye bir insan gibi girip sitenin kaynak kodlarını değişkenimizin içine çekip, daha sonra o kaynak kodlarını preg_match_all fonksiyonu ile bölerek belirli içerikleri almak.

curl_init

curl_init ile bir curl oturumu başlatıyoruz, curl fonksiyonunu kullanmamız için kesin ve en üst kısma eklememiz gereken bir kod, genellikle parametresiz olarak kullanılır. $ch değişkeni bizim curl değişkenimizin adı siz istediğiniz değişken adını kullanabilirsiniz.

$ch = curl_init();

curl_setopt

curl_setopt, curl ile parametre atarken ene çok kullanacağımız komuttur. Örneğin hangi siteye gireceğimizi, gireceğimiz siteye hangi USERAGENT ile bağlanacağımızı vs. Hangi siteye bağlanacağızı örnek olarak vereceksek CURLOPT_URL parametresini kullanmamız gerekir.

curl_setopt($ch, CURLOPT_URL, 'SİTE ADRESİ');

veya diğer bir örneğimiz ise CURLOPT_USERAGENT parametremiz olsun.

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36");

curl_exec

CURL bağlantısını başlatır, curl_close fonksiyonundan önce kullanılması gerekir. Biz curl_exec fonksiyonumuzu $s değişkenine atadık siz isterseniz farklı bir değişkene atayabilirsiniz çünkü verileri parçalarken bu değişkeni kullanacağız.

$s = curl_exec($ch);

curl_close

CURL fonksiyonlarında genelde son fonksiyon olarak curl_close komutumuz kullanılır, CURL oturumunu sonlandırır ve curl_init ile başlattığımız $ch değişkenimizi siler.

url_close($ch);

Tüm fonksiyonlarımızı kulladığımızda örnek olarak haber7 sitesinin başlığını çekecek olursak php kodlarımız şu şekilde olacaktır:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.haber7.com/');
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$s = curl_exec($ch);
curl_close($ch);

Şimdi sıra gelen kaynak kodlarını parçalara bölerek istediğimiz veriyi almaya.

preg_match_all('@<title>(.*?)</title>@si',$s,$veri);

php preg_match_all fonksiyonu ile $s değişkeni içindeki <title> etiketleri arasındaki (.*?) bilinmeyenini $veri değişkeninin içine kaydettik ve kaynak kodlarımızı parçaladık.

echo "<pre>";
print_r($veri);
echo "</pre>";

*pre etiketi kullanmamızın amacı, dizimize gelen verileri tek satır halinde değilde  daha düzenli bir şekilde görüntülemek için eklememiz gerekir. Çıktının son hali şu şekilde olacaktır;

php curl fonksiyonu kullanımı

Haber7 sitesinin başlığını başarıyla çektiğini görüyoruz, daha sonra bu gelen diziden 1. elemanın 0. elamnını echo yaparak istediğimiz yerde görüntüleyebiliriz.

<?php echo $veri[1][0]; ?>
PHP Curl Fonksiyonu Kullanımı için Yorumlar