Merhaba,
Bazı sunucularda file_get_contents metodu çalışmıyor. Buda yaptığım projelerde sıkıntıya yol açabiliyor.
Curl yöntemi ile bu işlemi yapmak istiyorum. Yalnız bu yöntemin birsürü ayarı var. Proxy ayarları da varmış sanırsam. Proxy kullanmadan yapabilmem mümkün müdür ? Tek satırlık veri çekeceğim sadece. Örnek kod atabilir misiniz ?
Php Curl ile Veri Çekme
3
●3.840
- 11-06-2015, 08:40:58
<?php function curl($url){ $ch = curl_init(); $timeout = "5"; curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_HEADER,false); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch,CURLOPT_REFERER,"http://www.google.com.tr"); curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER["HTTP_USERAGENT"]); $data = curl_exec($ch); curl_close($ch); return $data; } echo curl("http://www.webmaster.tc/index.php"); ?>Şimdi buradaki kodları açıklamamız gerekirse ;
CURLOPT_SSL_VERIFYPEER => SSL sertifikamızın olmadığını söylüyoruz, Bu sayede https:// sayfalarla iletişime geçebiliyoruz.
CURLOPT_RETURNTRANSFER => Eğer bu değeri 1 yapmaz iseniz, Bir fonksiyon da echo kullanmış gibi sonucu değişkene atayamazsınız. Yani direk ekrana basılır (siz echo demeseniz bile) onun için bunu 1 veya true yapmanız gerekir.
CURLOPT_CONNECTTIMEOUT => Burada da siteden kaç sn tepki bekleyeceğini yazıyoruz, Yani $timeout değişkeni 5 e eşit olduğun için eğer 5 sn de site tepki vermez ise işlemi sonlandıracak.
CURLOPT_FOLLOWLOCATION => En önemli özelliklerden biri de bu, Bu özellik sayesinde yönlendirmeleri otomatik takip edebilirsiniz. Yani a.com sayfasına girdiğiniz de, sizi a.com/a.php sayfasına yönlendiriyorsa curl bunu takip etmez. Ama CURLOPT_FOLLOWLOCATION özelliği sayesinde, Otomatik olarak yönlendirmeyi takip ettirip o sayfanın kaynağını size verecektir.
Dikkat ! Bu özellik için sunucunuz da ayar gerekebilir, Onun için eğer ihtiyacınız yok ise ve Sunucunuz da followlocation ile İlgili bir hata çıktı ise O satırı silebilirsiniz. Eğer gerekli ise ve Hata veriyor ise open_base açmanız gerekmektedir (Hatayı hostcunuza verirseniz o çözer).
CURLOPT_REFERER => Kişinin sitesine hangi siteden geldiğimizi söylüyoruz, Yani siz de sayaçlarınızı incelerken görürsünüz şu adresden gelmiş şeklinde, Burada da geldiğimiz adresi gösteriyoruz.
CURLOPT_USERAGENT => Burada da kişinin sitesine girerken, Kullandığımız tarayıcı hakkında bilgi veriyoruz. HTTP_USERAGENT kullandığım için bu php sayfasını kim görüntüler ise Onun tarayıcı bilgileri yansıyacaktır. Buda, Her seferinde aynı bilginin gitmesini engelleyecektir.
file_get_contents, Curl dan daha fazla sunucuyu yorduğu için ve Çok basit şekilde engellenebileceği için, Yukarıdaki fonksiyonu botlarınız da kullanabilirsiniz. Bu sayede, Daha hızlı / Daha güvenli şekilde performans alabilirsiniz. (Eğer genel bir kod yazacak iseniz, Mutlaka followlocation kaldırın. (İhtiyacınız yoksa) aksi taktir de her hostta çalışmayacaktır). - 11-06-2015, 17:17:42Hocam çok teşekkürler yalnız çalışmadı. Çekmeye çalıştığım siteden sadece ERROR verisi dönüyor bu ekrana basmam gerek.Ceu adlı üyeden alıntı: mesajı görüntüle
Sunucu sahibine sordum sunucuda curl aktif miş ayrıca followlocation true ve false olarak da denedim veri dönmüyor.
--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 17:17:42 -->-> Daha önceki mesaj 16:35:42 --
Hocam şimdi birşey farkettim. Kendi sunucumda bulunan başka domaine ait dosyadan veriyi çekmiyor. Bu sorunun sebebi nedir ?
Ayrıca şöyle birşey farkettim. Mesela shiftdelete 'i çekmeye çalışıyorum herhangi bir veri gelmiyor. tamindir'i deniyorum çalışıyor - 03-04-2024, 01:52:34temiz ve güzel anlatım bir çok yerden kod aldım hepsinde sorun yaşadım bu kodu başarılı şekilde çalıştırdım teşekkürler