PHP'de birçok PHP projesinde cURL kelimesini görüyorum. Bu ne? O nasıl çalışır?
Referans Bağlantısı: cURL
PHP'de birçok PHP projesinde cURL kelimesini görüyorum. Bu ne? O nasıl çalışır?
Referans Bağlantısı: cURL
Yanıtlar:
cURL , PHP'de HTTP istekleri yapmanızı sağlayan bir kütüphanedir. Bu konuda bilmeniz gereken her şey (ve diğer birçok uzantı) PHP kılavuzunda bulunabilir .
PHP'nin cURL işlevlerini kullanabilmek için »libcurl paketini kurmanız gerekir. PHP, libcurl 7.0.2-beta veya üstünü kullanmanızı gerektirir. PHP 4.2.3 sürümünde libcurl 7.9.0 veya daha yeni bir sürüme ihtiyacınız olacaktır. PHP 4.3.0'dan itibaren, 7.9.8 veya daha yüksek bir libcurl sürümüne ihtiyacınız olacaktır. PHP 5.0.0, libcurl sürüm 7.10.5 veya üstünü gerektirir.
Dosyanızda allow_url_fopen
etkinleştirilmesi gerekmesine rağmen, cURL olmadan da HTTP istekleri yapabilirsiniz php.ini
.
// Make a HTTP GET request and print it (requires allow_url_fopen to be enabled)
print file_get_contents('http://www.example.com/');
cURL, html yanıtı almak için kodunuzdan bir URL'ye erişebileceğiniz bir yöntemdir. cURL, diğer URL'lerle bağlantı kurmanıza ve yanıtlarını kodunuzda kullanmanıza olanak tanıyan müşteri URL'si anlamına gelir.
Özet:
curl_exec
PHP komut kullanımına bir köprüdürcurl
konsoldan. curl_exec, GET / POST isteklerini hızlı ve kolay bir şekilde yapmayı, JSON gibi diğer sunuculardan yanıtlar almayı ve dosyaları indirmeyi kolaylaştırır.
Tehlike uyarısı:
curl
yanlış kullanıldığında kötü ve tehlikelidir çünkü hepsi internetten veri almakla ilgilidir. Birisi curl ve diğer sunucu arasında gidip rm -rf /
yanıtınıza bir enjekte edebilir ve sonra neden bir konsola düştüm vels -l
artık çalışmıyor? Çünkü kıvrılmanın tehlikeli gücünü hafife aldınız. Kendi sunucularınızla konuşsanız bile, kıvrılmadan geri dönen hiçbir şeye güvenmeyin. Zenginliklerinin aptallarını rahatlatmak için kötü amaçlı yazılımları geri çekiyor olabilirsiniz.
Bunlar Ubuntu 12.10'da yapıldı
Komut satırından temel kıvrılma:
el@apollo:/home/el$ curl http://i.imgur.com/4rBHtSm.gif > mycat.gif
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 492k 100 492k 0 0 1077k 0 --:--:-- --:--:-- --:--:-- 1240k
Ardından gifinizi firefox'ta açabilirsiniz:
firefox mycat.gif
Toxoplasma gondii'nin geliştiği görkemli kediler, kadınların kedileri etrafında tutmasına ve erkeklerin de kadınları etrafında tutmasına neden olur.
cURL örneği google.com'a basma isteği alır, komut satırına yankılanır:
Bu phpsh terminali ile yapılır:
php> $ch = curl_init();
php> curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');
php> curl_exec($ch);
Hangi yoğunlaştırılmış html ve javascript (google) konsolu yazdırır ve dökümü.
cURL örneği, yanıt metnini bir değişkene yerleştirir:
Bu phpsh terminali ile yapılır:
php> $ch = curl_init();
php> curl_setopt($ch, CURLOPT_URL, 'http://i.imgur.com/wtQ6yZR.gif');
php> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
php> $contents = curl_exec($ch);
php> echo $contents;
Değişken şimdi bir kedinin animasyonlu bir gif olan ikili içerir, olasılıklar sonsuzdur.
Bir PHP dosyasından kıvrılma yapın:
Bu kodu myphp.php adlı bir dosyaya yerleştirin:
<?php
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,'http://www.google.com');
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
if (empty($buffer)){
print "Nothing returned from url.<p>";
}
else{
print $buffer;
}
?>
Sonra komut satırı üzerinden çalıştırın:
php < myphp.php
Myphp.php dosyasını çalıştırdınız ve php yorumlayıcısı aracılığıyla bu komutları uyguladınız ve ekrana bir ton dağınık html ve javascript döktünüz.
Curl ile yapabilirsiniz GET
ve isteyebilirsiniz POST
, tek yapmanız gereken parametreleri burada tanımlandığı gibidir: HTTP işlerini otomatikleştirmek için curl kullanma
Tehlike hatırlatıcısı:
Dikkatli olun, herhangi bir yorumlanır ve yürütülürse, kutunuzun sahibi olur ve kredi kartı bilgileriniz üçüncü taraflara satılır ve bir Alabama tek kişilik döşeme şirketinden gizemli bir 900 $ ücret alırsınız. yurtdışı kredi kartı sahtekarlığı suç halka için ön.
cURL, bir HTML yanıtı almak için kodunuzdan bir URL'ye erişebileceğiniz bir yöntemdir. PHP dilinden cURL komut satırı için kullanılır.
<?php
// Step 1
$cSession = curl_init();
// Step 2
curl_setopt($cSession,CURLOPT_URL,"http://www.google.com/search?q=curl");
curl_setopt($cSession,CURLOPT_RETURNTRANSFER,true);
curl_setopt($cSession,CURLOPT_HEADER, false);
// Step 3
$result=curl_exec($cSession);
// Step 4
curl_close($cSession);
// Step 5
echo $result;
?>
Adım 1: düğmesini kullanarak bir kıvrılma oturumu başlatın curl_init()
.
Adım 2: için seçeneği ayarlayın CURLOPT_URL
. Bu değer, isteği gönderdiğimiz URL'dir. curl
Parametresini kullanarak bir arama terimi ekleyin q=
. İçin seçeneği ayarlayın CURLOPT_RETURNTRANSFER
. True, curl'a dizeyi yazdırmak yerine döndürmesini söyler. Seçeneğini ayarlamak için CURLOPT_HEADER
false, curl öğesine dönüş değerindeki üstbilgiyi yoksaymasını söyler.
Adım 3: düğmesini kullanarak kıvırma oturumunu yürütün curl_exec()
.
4. Adım: Oluşturduğumuz kıvırma oturumunu kapatın.
Adım 5: Dönüş dizesini çıktılayın.
public function curlCall($apiurl, $auth, $rflag)
{
$ch = curl_init($apiurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if($auth == 'auth') {
curl_setopt($ch, CURLOPT_USERPWD, "passw:passw");
} else {
curl_setopt($ch, CURLOPT_USERPWD, "ss:ss1");
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$dt = curl_exec($ch);
curl_close($ch);
if($rflag != 1) {
$dt = json_decode($dt,true);
}
return $dt;
}
Bu, kimlik doğrulama için de kullanılır. Kimlik doğrulama için kullanıcı adını ve şifreyi de ayarlayabiliriz.
Daha fazla işlevsellik için kullanım kılavuzuna veya aşağıdaki eğiticiye bakın:
http://php.net/manual/en/ref.curl.php
http://www.startutorial.com/articles/view/php-curl
İlk olarak curl, libcurl ve PHP / cURL kavramlarını anlayalım.
curl : URL sözdizimini kullanarak dosya almak veya göndermek için kullanılan bir komut satırı aracı.
libcurl : Daniel Stenberg tarafından oluşturulan ve birçok farklı protokol türüne sahip birçok farklı sunucu türüne bağlanmanıza ve iletişim kurmanıza olanak tanıyan bir kütüphane. libcurl şu anda http, https, ftp, gopher, telnet, dict, file ve ldap protokollerini desteklemektedir. libcurl ayrıca HTTPS sertifikalarını, HTTP POST, HTTP PUT, FTP yüklemeyi (PHP'nin ftp uzantısıyla da yapılabilir), HTTP form tabanlı yüklemeyi, proxy'leri, çerezleri ve kullanıcı + şifre kimlik doğrulamasını destekler.
PHP / cURL : PHP programlarının libcurl kullanmasını sağlayan PHP modülü.
Bu nasıl kullanılır:
step1 : curl_init () öğesini kullanarak bir curl oturumu başlatın.
2. adım : CURLOPT_URL seçeneğini belirleyin. Bu değer, isteği gönderdiğimiz URL'dir. "Q =" parametresini kullanarak "curl" arama terimi ekleyin. CURLOPT_RETURNTRANSFER seçeneğini ayarlayın, true, curl'a dizeyi yazdırmak yerine döndürmesini söyleyecektir. CURLOPT_HEADER için seçenek belirlendiğinde false, curl öğesine dönüş değerindeki üstbilgiyi yoksaymasını söyler.
step3 : curl_exec () öğesini kullanarak curl oturumunu yürütün.
Adım 4 : Oluşturduğumuz kıvırma oturumunu kapatın.
step5 : Dönüş dizesini çıktılar .
DEMO yap :
İki PHP dosyası oluşturmanız ve bunları web sunucunuzun PHP dosyalarını sunabileceği bir klasöre yerleştirmeniz gerekir. Benim durumumda basitlik için / var / www / 'a koydum.
1. helloservice.php ve 2. demo.php
helloservice.php çok basittir ve aslında aldığı tüm verileri tekrarlar:
<?php
// Here is the data we will be sending to the service
$some_data = array(
'message' => 'Hello World',
'name' => 'Anand'
);
$curl = curl_init();
// You can also set the URL you want to communicate with by doing this:
// $curl = curl_init('http://localhost/echoservice');
// We POST the data
curl_setopt($curl, CURLOPT_POST, 1);
// Set the url path we want to call
curl_setopt($curl, CURLOPT_URL, 'http://localhost/demo.php');
// Make it so the data coming back is put into a string
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// Insert the data
curl_setopt($curl, CURLOPT_POSTFIELDS, $some_data);
// You can also bunch the above commands into an array if you choose using: curl_setopt_array
// Send the request
$result = curl_exec($curl);
// Get some cURL session information back
$info = curl_getinfo($curl);
echo 'content type: ' . $info['content_type'] . '<br />';
echo 'http code: ' . $info['http_code'] . '<br />';
// Free up the resources $curl is using
curl_close($curl);
echo $result;
?>
2.demo.php sayfasında, sonucu görebilirsiniz:
<?php
print_r($_POST);
//content type: text/html; charset=UTF-8
//http code: 200
//Array ( [message] => Hello World [name] => Anand )
?>
PHP'nin cURL uzantısı, PHP betiğinizden çeşitli web kaynaklarını kullanmanıza izin vermek için tasarlanmıştır.
PHP cURL php dilinden cURL komut satırı kullanmak için bir köprüdür
PHP, Daniel Stenberg tarafından oluşturulan ve birçok farklı türde protokole sahip birçok farklı sunucu tipine bağlanmanıza ve iletişim kurmanıza izin veren libcurl'u destekler. libcurl şu anda http, https, ftp, gopher, telnet, dict, file ve ldap protokollerini desteklemektedir. libcurl ayrıca HTTPS sertifikalarını, HTTP POST, HTTP PUT, FTP yüklemeyi (PHP'nin ftp uzantısıyla da yapılabilir), HTTP form tabanlı yüklemeyi, proxy'leri, çerezleri ve kullanıcı + şifre kimlik doğrulamasını destekler.
PHP'yi cURL desteğiyle derledikten sonra cURL işlevlerini kullanmaya başlayabilirsiniz. CURL işlevlerinin arkasındaki temel fikir, curl_init () öğesini kullanarak bir cURL oturumu başlatmanız, ardından curl_setopt () ile aktarım için tüm seçeneklerinizi ayarlamanız ve ardından curl_exec () ile oturumu yürütebilirsiniz. curl_close () yöntemini kullanarak oturumunuzu tamamlayın.
// error reporting
error_reporting(E_ALL);
ini_set("display_errors", 1);
//setting url
$url = 'http://example.com/api';
//data
$data = array("message" => "Hello World!!!");
try {
$ch = curl_init($url);
$data_string = json_encode($data);
if (FALSE === $ch)
throw new Exception('failed to initialize');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)));
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$output = curl_exec($ch);
if (FALSE === $output)
throw new Exception(curl_error($ch), curl_errno($ch));
// ...process $output now
} catch(Exception $e) {
trigger_error(sprintf(
'Curl failed with error #%d: %s',
$e->getCode(), $e->getMessage()),
E_USER_ERROR);
}
Curl, öncelikle Linux / Unix komut satırı aracı için yazılan normal curl komutunun ve kitaplığının davranışlarını devralan PHP'nin bir uzantısı değil
Curl nedir? cURL, Müşteri URL'si anlamına gelir. CURL herhangi bir URL'ye veri göndermek için kullanılır. Kıvrımın tam olarak ne olduğu hakkında daha fazla bilgi için CURL Web sitesini ziyaret edebilirsiniz.
PHP'de cURL Artık, HTTP veya FTP gibi farklı protokoller yoluyla erişilebilir herhangi bir URL'ye veri göndermek için aynı kavram PHP'de tanıtıldı. Daha fazla ayrıntı için PHP Curl Eğitimi'ne başvurabilirsiniz.
Php kıvırma işlevi (POST, GET, DELETE, PUT)
function curl($post = array(), $url, $token = '', $method = "POST", $json = false, $ssl = true){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
if($method == 'POST'){
curl_setopt($ch, CURLOPT_POST, 1);
}
if($json == true){
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json','Authorization: Bearer '.$token,'Content-Length: ' . strlen($post)));
}else{
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSLVERSION, 6);
if($ssl == false){
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}
// curl_setopt($ch, CURLOPT_HEADER, 0);
$r = curl_exec($ch);
if (curl_error($ch)) {
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err = curl_error($ch);
print_r('Error: ' . $err . ' Status: ' . $statusCode);
// Add error
$this->error = $err;
}
curl_close($ch);
return $r;
}
Php curl sınıfı (GET, POST, YÜKLEME DOSYALARI, OTURUMLAR, POST JSON GÖNDER, GÜÇ KAYNAKLI SSL / TLS):
<?php
// Php curl class
class Curl {
public $error;
function __construct() {}
function Get($url = "http://hostname.x/api.php?q=jabadoo&txt=gin", $forceSsl = false,$cookie = "", $session = true){
// $url = $url . "?". http_build_query($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($session){
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
}
if($forceSsl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
}
if(!empty($cookie)){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
}
$info = curl_getinfo($ch);
$res = curl_exec($ch);
if (curl_error($ch)) {
$this->error = curl_error($ch);
throw new Exception($this->error);
}else{
curl_close($ch);
return $res;
}
}
function GetArray($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $forceSsl = false, $cookie = "", $session = true){
$url = $url . "?". http_build_query($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($session){
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
}
if($forceSsl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
}
if(!empty($cookie)){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
}
$info = curl_getinfo($ch);
$res = curl_exec($ch);
if (curl_error($ch)) {
$this->error = curl_error($ch);
throw new Exception($this->error);
}else{
curl_close($ch);
return $res;
}
}
function PostJson($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $forceSsl = false, $cookie = "", $session = true){
$data = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($session){
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
}
if($forceSsl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
}
if(!empty($cookie)){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
}
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer helo29dasd8asd6asnav7ffa',
'Content-Type: application/json',
'Content-Length: ' . strlen($data))
);
$res = curl_exec($ch);
if (curl_error($ch)) {
$this->error = curl_error($ch);
throw new Exception($this->error);
}else{
curl_close($ch);
return $res;
}
}
function Post($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $files = array('ads/ads0.jpg', 'ads/ads1.jpg'), $forceSsl = false, $cookie = "", $session = true){
foreach ($files as $k => $v) {
$f = realpath($v);
if(file_exists($f)){
$fc = new CurlFile($f, mime_content_type($f), basename($f));
$data["file[".$k."]"] = $fc;
}
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); // !!!! required as of PHP 5.6.0 for files !!!
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)");
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($session){
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
}
if($forceSsl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
}
if(!empty($cookie)){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
}
$res = curl_exec($ch);
if (curl_error($ch)) {
$this->error = curl_error($ch);
throw new Exception($this->error);
}else{
curl_close($ch);
return $res;
}
}
}
?>
Misal:
<?php
$urlget = "http://hostname.x/api.php?id=123&user=bax";
$url = "http://hostname.x/api.php";
$data = array("name" => "Max", "age" => "36");
$files = array('ads/ads0.jpg', 'ads/ads1.jpg');
$curl = new Curl();
echo $curl->Get($urlget, true, "token=12345");
echo $curl->GetArray($url, $data, true);
echo $curl->Post($url, $data, $files, true);
echo $curl->PostJson($url, $data, true);
?>
Php dosyası: api.php
<?php
/*
$Cookie = session_get_cookie_params();
print_r($Cookie);
*/
session_set_cookie_params(9000, '/', 'hostname.x', isset($_SERVER["HTTPS"]), true);
session_start();
$_SESSION['cnt']++;
echo "Session count: " . $_SESSION['cnt']. "\r\n";
echo $json = file_get_contents('php://input');
$arr = json_decode($json, true);
echo "<pre>";
if(!empty($json)){ print_r($arr); }
if(!empty($_GET)){ print_r($_GET); }
if(!empty($_POST)){ print_r($_POST); }
if(!empty($_FILES)){ print_r($_FILES); }
// request headers
print_r(getallheaders());
print_r(apache_response_headers());
// Fetch a list of headers to be sent.
// print_r(headers_list());
?>