Curl istifadə edərək HTTP sorğularının yazılması. C dilində Curl müştəri komanda xəttindən Veb faylların ötürülməsi

Həqiqi praktik nümunə: IP ünvanını dəyişdirmək üçün marşrutlaşdırıcını (modemi) yenidən başlatmalısınız. Bunu etmək üçün sizə lazımdır: marşrutlaşdırıcıya daxil olun, texniki xidmət səhifəsinə keçin və "Yenidən başladın" düyməsini basın. Bu hərəkəti bir neçə dəfə yerinə yetirmək lazımdırsa, prosedur təkrarlanmalıdır. Razılaşın, bu rejimi hər dəfə əl ilə etmək istəmirsiniz. cURL bütün bunları avtomatlaşdırmağa imkan verir. Yalnız bir neçə cURL əmri ilə siz avtorizasiya əldə edə və marşrutlaşdırıcıda tapşırığı tamamlaya bilərsiniz.

  • cURL əmr satırında veb saytlardan məlumat almaq üçün faydalıdır.
Başqa bir praktiki nümunə: biz bir neçə sayt üçün ümumi statistikanın nümayişini həyata keçirmək istəyirik. Əgər cURL-dən istifadə etsək, bu, tamamilə mənasız bir işə çevrilir: cURL-dan istifadə edərək biz statistika toplama xidmətində autentifikasiya edirik (lazım olduqda), sonra (yenidən cURL əmrlərindən istifadə etməklə) lazımi səhifələri əldə edirik, bizə lazım olan məlumatları təhlil edirik; prosedur bütün saytlarımız üçün təkrarlanır, sonra biz əlavə edirik və yekun nəticəni göstəririk.

Bunlar. cURL-dən istifadə halları olduqca realdır, baxmayaraq ki, əksər hallarda cURL öz proqramları üçün istifadə edən proqramçılara lazımdır.

CURL bir çox protokolları və avtorizasiya üsullarını dəstəkləyir, faylları ötürə bilir, kukilərlə düzgün işləyir, SSL sertifikatlarını, proksiləri və s. dəstəkləyir.

PHP və komanda xəttində cURL

Biz cURL-dən iki əsas şəkildə istifadə edə bilərik: PHP skriptlərində və komanda xəttində.

Serverdə PHP-də cURL-i aktivləşdirmək üçün php.ini faylındakı sətri şərhdən çıxarmalısınız.

Extension=php_curl.dll

Və sonra serveri yenidən başladın.

Linux-da siz curl paketini quraşdırmalısınız.

Debian, Ubuntu və ya Linux Mint-də:

$ sudo apt-get install curl


Fedora, CentOS və ya RHEL-də:

$ sudo yum curl quraşdırın

PHP-də və komanda xəttində istifadə fərqini aydın görmək üçün eyni tapşırıqları iki dəfə yerinə yetirəcəyik: əvvəlcə PHP skriptində, sonra isə komanda xəttində. Çalışaq ki, çaşqınlıq olmasın.

cURL istifadə edərək məlumatların alınması

PHP-də cURL istifadə edərək məlumatların alınması

PHP-də nümunə:

Hər şey çox sadədir:
$target_url- bizi maraqlandıran saytın ünvanı. Sayt ünvanından sonra iki nöqtə qoyub port ünvanını əlavə edə bilərsiniz (port standartdan fərqlidirsə).

curl_init- yeni seansı işə salır və nümunəmizdə dəyişənə təyin edilmiş sapı qaytarır $ch.

Sonra sorğunu cURL funksiyası ilə yerinə yetiririk curl_exec, ona parametr kimi deskriptor ötürülür.

Hər şey çox məntiqlidir, lakin bu skript icra edildikdə, saytın məzmunu səhifəmizdə görünəcək. Bəs məzmunu göstərmək istəmiriksə, lakin onu dəyişənə yazmaq istəsək (sonradan emal və ya təhlil üçün).

Skriptimizə bir az əlavə edək:

0) ( echo "Curl xətası: " . curl_error($ch); ) curl_close($ch); ?>

Bizim bir xəttimiz var curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);.

curl_setopt- variantları təyin edir. Seçimlərin tam siyahısını bu səhifədə tapa bilərsiniz:

Qonaqlardan gizlədilib

$cavab_data = curl_exec($ch);

İndi skript dəyəri $response_data dəyişəninə təyin edilir, onunla sonrakı əməliyyatlar yerinə yetirilə bilər. Məsələn, onun məzmununu göstərə bilərsiniz.

Dikişlər

Əgər (curl_errno($ch) > 0) ( echo "Qıvrılma xətası: " . curl_error($ch); )

xətaların baş verməsi halında sazlama üçün xidmət edir.

Komanda xəttində cURL istifadə edərək məlumatların alınması

Komanda xəttində sadəcə yazın

əvəzinə harada mi-al.ru- veb saytınızın ünvanı.

Nəticəni ekranda göstərməkdənsə, məlumatları dəyişənə köçürmək lazımdırsa, bunu edin:

Temp="curl mi-al.ru"

Bununla belə, bəzi məlumatlar hələ də göstərilir:

Onların göstərilməsinin qarşısını almaq üçün açarı əlavə edin -s:

Temp="curl -s mi-al.ru"

Nə yazıldığını görə bilərsiniz:

Echo $temp | az

Əsas və HTTP autentifikasiyası

Doğrulama, sadəcə olaraq, istifadəçi adı və parolun daxil edilməsidir.

Əsas autentifikasiya server tərəfi identifikasiyasıdır. Bunun üçün iki fayl yaradılır: .htaccess.htpasswd

.htaccess faylının məzmunu bu kimi bir şeydir

AuthName "Yalnız qeydiyyatdan keçmiş istifadəçilər üçün!" AuthType Basic etibarlı istifadəçi tələb edir AuthUserFile /home/freeforum.biz/htdocs/.htpassw


.htpasswd faylının məzmunu belədir:

Mial:CRdiI.ZrZQRRc

Bunlar. giriş və parol hash.

Parolla qorunan qovluğa daxil olmağa çalışdığınız zaman brauzer belə bir şey göstərəcək:

HTTP identifikasiyası veb-saytdakı formada bir giriş və şifrə daxil etdiyimiz haldır. Məhz bu identifikasiya poçta, forumlara və s. daxil olduqda istifadə olunur.

Əsas cURL identifikasiyası (PHP)

Veb saytı var

Qonaqlardan gizlədilib

Gəlin ilkin skriptimizi sınayaq:

0) ( echo "Curl xətası: " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?>

Skript səhv olmadığına inansa da, nəticəni heç bəyənmirik:

İki sətir əlavə edin:

Curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "ru-board:ru-board");

İlk sətirdə identifikasiya növünü təyin etdik - əsas. İkinci sətirdə iki nöqtə ilə ayrılmış ad və parol var (bizim vəziyyətimizdə ad və parol eynidir - ru-board). Belə çıxdı:

0) ( echo "Curl xətası: " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?> Gəlin cəhd edək: 30946 Əla! Əsas cURL identifikasiyası (komanda xəttində) Eyni şeyi bir sətir ilə komanda xəttində əldə etmək olar: curl -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/

Mən autentifikasiya növünü qeyd etməyi unutmadım, sadəcə olaraq cURL-də əsas autentifikasiya növü standartdır.

Komanda xəttində hər şey o qədər tez işlədi ki, məyusluqdan aşağıdakı proqramı yazdım. O, sayta qoşulur və ən son yeniləməni yükləyir:

Temp=`curl -s -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/ | grep -E -o "Yeniləmə_FED_201(1).(2).(2).7z" | uniq | quyruq -n 1`; curl -o $temp -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/$temp

Yalnız bir neçə daha çox əmrlə əlavə edə bilərsiniz:

  • arxivin göstərilən qovluğa açılması;
  • ConsultantPlus yeniləmələrinin işə salınması (bunlar onun üçün yeniləmələrdir);
  • ən son mövcud yeniləmənin artıq yükləndiyini və ya yenisinin göründüyünü yoxlaya bilərsiniz;
  • gündəlik yeniləmələr üçün hamısını Cron-a əlavə edin.
HTTP autentifikasiyası cURL

PHP-də HTTP cURL identifikasiyası

Bilməliyik:

  • autentifikasiya məlumatlarının göndəriləcəyi ünvan
  • GET və ya POST göndərmə üsulu
  • daxil ol
  • parol
Bəzən bu məlumatlar kifayət etmir. Gəlin bunu anlayaq.

Məlumatı göndərməyiniz lazım olan ünvan autentifikasiya formasından götürülə bilər. Misal üçün:

Mülkiyyətə baxırıq hərəkət. Bunlar. son səhifədir login.php. Bizə tam ünvan lazımdır, bu kimi

Qonaqlardan gizlədilib

Burada göndərmə üsulunu da tapırıq: metod = "yazı"

Mən login və parolu da bilirəm: admin və qwerasdfzxcv
Bunlar. POST metodundan istifadə edərək formadan serverə sətir göndərilir. Nəzəri olaraq, yeni sətir əlavə etdiyimiz əvvəlki skriptimiz işləməlidir. Bunlar. autentifikasiya baş verməlidir.

0) ( echo "Curl xətası: " . curl_error($ch); ) else ( ) curl_close($ch); ?>

Skriptdə yeni sətir

curl_setopt($ch, CURLOPT_POSTFIELDS, "LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv");

Burada curl_setopt- cURL üçün seçimləri təyin etmək üçün bizə artıq tanış olan bir funksiya, CURLOPT_POSTFIELDS- bu bizim təyin etdiyimiz variantın adıdır. CURLOPT_POSTFIELDS POST metodu ilə ötürülən bütün məlumatları ehtiva edir. Yaxşı, xəttin özü LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv- bu, ötürdüyümüz eyni məlumatlardır.

Formanı diqqətlə nəzərdən keçirsəniz, onun da gizli sahələrin olduğunu görəcəksiniz. Məlumatlar JavaScript ilə işlənə və ya əlavə edilə bilər, siz bütün bunları öyrənə bilərsiniz, amma mən daha sadə üsula üstünlük verirəm.

Mən Wireshark istifadə edirəm. Bu proqram trafiki iyləmək (tutmaq) üçün nəzərdə tutulub. Sayta dəqiq nəyin ötürüldüyünü görmək çox rahatdır.

Bu kiçik videoya baxın:


Bunlar. məlumatların ötürüldüyü ünvanla, mən doğru təxmin etdim. Ancaq ötürülən sim daha mürəkkəb oldu.

Düzgün parametri daxil etdim və skripti bir az dəyişdirdim ki, o, nəinki daxil olur, həm də marşrutlaşdırıcıdan bir şey alır:

0) ( echo "Qıvrılma xətası: " . curl_error($ch); ) else ( $target_url2 = "http://188.35.8.64:8080/bsc_wlan.php"; $ch2 = curl_init($target_url2); curl_setopt($ ch2, CURLOPT_RETURNTRANSFER, 1); $response_data2 = curl_exec($ch2); , "", $results2); $results2 = str_replace("";", "", $results2); echo "Wi-Fi şəbəkəsinin adı: $nəticələr2
"; preg_match("|f_wpa.wpapsk1.value(.*)";|", $response_data2, $results3); $results3 = str_replace("f_wpa.wpapsk1.value", "", $results3); $results3 = str_replace("="", "", $results3); $results3 = str_replace("";", "", $results3); echo "Wi-Fi şəbəkə parolu: $nəticələr3"; ) curl_close($ch); ?>

Yeri gəlmişkən, əgər sahibi parolu yeniləyirsə (lakin proqram təminatını yeniləmirsə), onda yeni parola həmişə burada baxmaq olar.

Qonaqlardan gizlədilib

(Bu, D-Link DIR-300, D-Link DIR-320 və D-Link DAP-1353 marşrutlaşdırıcılarında tanınmış zəiflikdir).

Komanda xəttində HTTP cURL identifikasiyası

Biz artıq tam ünvanı, eləcə də ötürüləcək sətri bilirik. Beləliklə, sadədir:

Curl --data "ACTION_POST=LOGIN&FILECODE=&DOĞRULAMA_KODU=&LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv&login=Log+In+&VER_CODE=" http://188.35.8.64:8080/php.

Düşünürəm ki, hər şey aydındır, çünki biz bu müddətləri artıq nəzərdən keçirmişik. Kim başa düşmürsə, şərhlərdə soruşun.

Məlumatları əldə etmək və təhlil etmək üçün cURL-dən istifadə nümunəsi aşağıdakı əmrlər dəsti ola bilər:

Curl -s --data "ACTION_POST=LOGIN&FILECODE=&DOĞRULAMA_KODU=&LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv&login=Log+In+&VER_CODE=" http://188.35.8.64:8080/enuv&login.phcholl/de " && echo "Wi-Fi şəbəkəsinin adı" && curl -s http://188.35.8.64:8080/bsc_wlan.php | grep -E "f.ssid.value = "(.)*";" | sed "s/f.ssid.value = "//" | sed "s/";//" && echo "Wi-Fi şəbəkə parolu" && curl -s http://188.35.8.64:8080/bsc_wlan.php | grep -E "f_wpa.wpapsk1.(.)*";" | sed "s/f_wpa.wpapsk1.value//" | sed "s/";//" | sed "s/="//"

Bu başlığı belə yazmaq daha düzgün olardı: “Mürəkkəb” icazə halları. Bunlar. "Mürəkkəb" sözünü dırnaq işarəsinə qoyun. Onlar yalnız ilk baxışdan mürəkkəb görünürlər, aydın olmayanda: göndərmə harada baş verir, hansı sahə adlarıdır, dəqiq nə göndərilir və s.

Lakin, əslində, hamısı POST və ya GET metodlarına gəlir. Dəqiq nəyin göndərildiyini başa düşmək üçün siz forma ilə səhifəni diskinizdə saxlaya və göndərmə düyməsinə göndərilmək üçün yaradılan məlumatları göstərmək funksiyası əlavə edə bilərsiniz. Və ya daha sadə - mənim kimi, Wireshark.

Məlumat düzgündürsə, lakin identifikasiya baş vermirsə, aşağıdakı istiqamətlərdə qazmalısınız:

  • düzgün istinad sətirini təyin edin
  • "düzgün" istifadəçi agent sətirini təyin edin.
Bütün bunlar əsas cURL metodlarından istifadə etməklə edilə bilər, lakin mən buna girməyəcəyəm. Dərs artıq kifayət qədər uzun idi, amma mən də cURL ilə bir neçə fənd göstərmək istədim.

Məsləhətlər və fəndlər cURL

cURL və CURLOPT_COOKIEJAR əlavə olaraq kuki qəbul edir

Düşünürəm ki, artıq aydındır ki, cURL kukiləri düzgün idarə edir - onları saxlayır, server tələb etdikdə istifadə edir və s. Amma bəzən kukiləri saxlamaq lazımdır. Bunun üçün CURLOPT_COOKIEJAR adlı bir seçim var, lakin ondan istifadə etmək həmişə mümkün olmur. İlk hiyləmiz buna həsr edilmişdir.

Bəzən PHP serverdə konfiqurasiya olunduğuna görə CURLOPT_COOKIEJAR (qəbul edilmiş kukiləri faylda saxlamağa imkan verir) və CURLOPT_COOKIEFILE (fayldan kukilərdən istifadə etməyə imkan verir) kimi seçimlər bizim üçün əlçatan olmur. Çünki deyirlər ki, bu seçimlərdən istifadə etməklə onların serverindən istənilən faylı oğurlaya bilərik. Bu problemin həlli budur:

1) Biz CURLOPT_FOLLOWLOCATION istifadə etmirik
2) curl_setopt istifadə edin ($ch, CURLOPT_HEADER, 1)
3) Başlıqdan kukiləri belə toplayın:

Preg_match_all("|Set-Cookie: (.*);|U", $content, $nəticələr); $cookies = implode(";", $nəticələr);

4) curl_setopt($ch, CURLOPT_COOKIE, $cookies) istifadə edərək onları təyin edin;

İkinci ipucu. Təcavüzkardan qurbana çevrilə bilərik. Ortadakı adam hücumunun qurbanı olmamaq üçün bunu edirik.

Lütfən, hər kəs, CURLOPT_SSL_VERIFYPEER parametrini false və ya 0-a təyin etməyi dayandırın. Əgər PHP quraşdırmanızda kök CA sertifikatlarının müasir dəsti yoxdursa, curl saytından birini endirin və serverinizdə saxlayın:

Qonaqlardan gizlədilib

Sonra php.ini faylınızdakı yolu təyin edin, məsələn, Windows-da:

Curl.cainfo=c:phpcacert.pem

CURLOPT_SSL_VERIFYPEER-in söndürülməsi bizim istəmədiyimiz adam-in-the-middle (MITM) hücumuna imkan verir!

Yaxşı, bu gün üçün son məsləhət. Çoxlu sayda asinxron curl sorğularının mümkün olduğunu bilirdinizmi?

Bunun üçün istifadə edə bilərsiniz curl_multi_init. Rəsmi sənədlərdə təfərrüatlar və nümunə kodu

Qonaqlardan gizlədilib

Qonaqlardan gizlədilib


Komanda xəttində cURL haqqında

Qonaqlardan gizlədilib


CURL dərsinin ikinci hissəsi də rus dilində oxumaq üçün hazırlanmışdır: "".

JavaScript brauzerinizdə bloklanıb. Saytın işləməsi üçün JavaScript-i aktiv edin!

Qıvrım

PHP, Daniel Stenberg tərəfindən yaradılmış və müxtəlif növ serverlərə və protokollara qoşulmağa imkan verən libcurl kitabxanasını dəstəkləyir.
libcurl hazırda http, https, ftp, gopher, telnet, dict, file və ldap protokollarını dəstəkləyir.
libcurl həmçinin HTTPS sertifikatlarını, HTTP POST, HTTP PUT, FTP yükləməsini (bu, ftp PHP uzantısı ilə də edilə bilər), HTTP forma əsaslı yükləməni, proksiləri, kukiləri və istifadəçi+parol autentifikasiyasını dəstəkləyir.

Bu funksiyalar PHP 4.0.2-də təqdim edilmişdir.

curl_init

curl_init - CURL seansını işə salır.

Təsvir

resurs curl_init()

Funksiya curl_init() yeni sessiyanı işə salır və , və funksiyalarında istifadə üçün CURL sapını qaytarır. Əgər isteğe bağlı parametr url təmin edildikdə, CURLOPT_URL seçimi bu parametrin dəyərini alacaq. istifadə edərək onu əl ilə quraşdıra bilərsiniz.

curl_setopt

curl_setopt - CURL transferi/transferi üçün seçimləri təyin edir.

Təsvir

bool curl_setopt(resurs ch, sətir seçimi, qarışıq dəyər)

Funksiya curl_setopt() parametrlə müəyyən edilmiş CURL sessiyası üçün seçimləri təyin edir ch. Parametr seçim təyin etmək istədiyiniz seçimdir və dəyər bu seçim dəyəridir seçim .

Parametr dəyər aşağıdakı seçimlər üçün uzun olmalıdır (parametrlə müəyyən edilir seçim):

  • CURLOPT_INFILESIZE: Əgər siz uzaq bir sayta fayl yükləyirsinizsə, bu seçim PHP-yə gözlənilən fayl ölçüsünün nə olacağını bildirmək üçün istifadə edilməlidir.
  • CURLOPT_VERBOSE: CURL-in bütün hərəkətləri bildirməsini istəyirsinizsə, bu seçimi sıfırdan fərqli qiymətə təyin edin.
  • CURLOPT_HEADER: Başlığın çıxışa daxil edilməsini istəyirsinizsə, bu seçimi sıfırdan fərqli qiymətə təyin edin.
  • CURLOPT_NOPROGRESS: PHP-nin CURL ötürmə tərəqqi göstəricisini göstərməsini istəmirsinizsə, bu seçimi sıfırdan fərqli qiymətə təyin edin. (PHP avtomatik olaraq bu seçimi sıfırdan fərqli qiymətə təyin edir; siz onu yalnız sazlama zamanı dəyişdirməlisiniz.)
  • CURLOPT_NOBODY: Gövdənin çıxışa daxil olmasını istəmirsinizsə, bu seçimi sıfırdan fərqli qiymətə təyin edin.
  • CURLOPT_FAILONERROR: Əgər geri qaytarılan HTTP kodu 300-dən çox olarsa, PHP-nin səssizcə çıxmasını istəyirsinizsə, bu seçimi sıfır olmayan dəyərə təyin edin. Varsayılan olaraq, kod nəzərə alınmadan səhifə normal şəkildə qaytarılır.
  • CURLOPT_YÜKLƏ: PHP-nin faylı yükləməyə hazırlamasını istəyirsinizsə, bu seçimi sıfırdan fərqli dəyərə qoyun.
  • CURLOPT_POST: PHP-nin müntəzəm HTTP POST yerinə yetirməsini istəyirsinizsə, bu seçimi sıfırdan fərqli dəyərə qoyun. Bu POST normal formada proqram/x-www-form-urlencoded, ən çox HTML formaları tərəfindən istifadə olunur.
  • CURLOPT_FTPLISTONLY: Bu seçimi sıfırdan fərqli qiymətə təyin edin və PHP FTP kataloq adlarını siyahıya alacaq.
  • CURLOPT_FTPAPPEND: Bu seçimi sıfır olmayan dəyərə təyin edin və PHP onun üzərinə yazmaq əvəzinə uzaq fayla əlavə edəcək.
  • CURLOPT_NETRC: Bu seçimi sıfır olmayan dəyərə qoyun və PHP qoşulduğunuz uzaq sayt üçün istifadəçi adınızı və parolunuzu tapmaq üçün ~./netrc faylınızı skan edəcək.
  • CURLOPT_FOLLOWLOCATION: Serverin HTTP başlığının bir hissəsi kimi göndərdiyi hər hansı "Yer: " başlığına əməl etmək üçün bu seçimi sıfırdan fərqli dəyərə qoyun (qeyd edək ki, bu rekursiyadır, PHP göndərilən bütün "Yer: " -başlıqları" izləyəcək. )
  • CURLOPT_PUT: Faylı HTTP PUT üçün bu seçimi sıfırdan fərqli qiymətə təyin edin. PUT üçün fayl CURLOPT_INFILE və CURLOPT_INFILESIZE istifadə edərək təyin edilməlidir.
  • CURLOPT_MUTE: Bu seçimi sıfırdan fərqli qiymətə təyin edin və PHP CURL funksiyaları ilə bağlı gizli işləyəcək.
  • CURLOPT_TIMEOUT: CURL funksiyalarının işə salınmasına icazə verdiyiniz saniyələrlə maksimum vaxtı ehtiva edən parametr kimi uzunu keçin.
  • CURLOPT_CONNECTTIMEOUT: Qoşulmağa cəhd edərkən gözləməyə icazə verdiyiniz maksimum vaxtı, saniyələrlə ehtiva edən parametr kimi uzunu keçirin. Əbədi gözləmək üçün 0 istifadə edin.
  • CURLOPT_LOW_SPEED_LIMIT: PHP-nin bunu çox yavaş hesab etməsi və onu dayandırması üçün saniyədə CURLOPT_LOW_SPEED_TIME icra zamanı köçürmənin yerinə yetirilməli olduğu saniyədə baytla ötürülmə sürətini ehtiva edən parametr kimi uzunu keçin.
  • CURLOPT_LOW_SPEED_TIME: PHP üçün CURLOPT_LOW_SPEED_LIMIT işləyərkən köçürmənin çox yavaş hesab edilməsi və onu dayandırması üçün aşağıdakı saniyələrlə müddəti ehtiva edən parametr kimi uzun müddət keçin.
  • CURLOPT_RESUME_FROM: Transferin başlamalı olduğu bayt ofsetini ehtiva edən parametr kimi uzun keçir.
  • CURLOPT_SSLVERSION: İstifadə etmək üçün SSL versiyasını ehtiva edən parametr kimi uzun müddət keçin (2 və ya 3). Varsayılan olaraq, PHP bunu özü müəyyən etməyə çalışır, baxmayaraq ki, bəzi hallarda bunu əl ilə qurmaq tələb olunur.
  • CURLOPT_SSL_VERIFYHOST: CURL SSL əl sıxmasında həmyaşıd sertifikatının ümumi adını yoxlamalıdırsa, uzun müddət keçin. 1 dəyəri ümumi/ümumi adın mövcudluğunu yoxlamalı olduğumuzu, 2 dəyəri isə onun təqdim edilmiş host adına uyğun olduğundan əmin olmağımızı göstərir.
  • CURLOPT_TIMECONDITION: CURLOPT_TIMEVALUE-nun necə işləndiyini müəyyən edən parametr kimi uzun müddət keçin. Siz bu parametri TIMECOND_IFMODSINCE və ya TIMECOND_ISUNMODSINCE olaraq təyin edə bilərsiniz. Bu yalnız HTTP üçün işləyir.
  • CURLOPT_TIMEVALUE: 1 Yanvar 1970-ci ildən bəri saniyələrlə vaxt olan parametr kimi uzunu keçin. Bu vaxt CURLOPT_TIMEVALUE seçimi ilə müəyyən edildiyi kimi istifadə olunur və ya defolt TIMECOND_IFMODSINCE istifadə olunacaq.
  • CURLOPT_RETURNTRANSFER: Əgər siz CURL-in qəbul edilmiş məlumatı birbaşa çap etmək əvəzinə birbaşa qaytarmasını istəyirsinizsə, sıfırdan fərqli bir dəyər keçirin.

Parametr dəyər aşağıdakı parametr dəyərləri üçün sətir olmalıdır seçim :

Aşağıdakı seçimlər funksiyadan istifadə etməklə əldə edilən fayl deskriptorunu gözləyir fopen() :

  • CURLOPT_FILE: Transferinizin çıxışının yerləşdirilməli olduğu fayl, standart olaraq STDOUT-dur.
  • CURLOPT_INFILE: Transfer daxiletmənizin gəldiyi fayl.
  • CURLOPT_WRITEHEADER: Çıxışın başlıq hissəsini qeyd etmək üçün fayl.
  • CURLOPT_STDERR: stderr yerinə xətaları qeyd etmək üçün fayl.

Parametr dəyər uzun yazma_callback (resurs ch, string data)( ... strlen qaytarın($data);) seçim :

  • CURLOPT_WRITEFUNCTION: .
  • CURLOPT_HEADERFUNCTION: .

Parametr dəyər aşağıdakı formanın funksiyası olmalıdır string read_callback (resurs ch, resurs fd, uzun uzunluq)() aşağıdakı parametr dəyərləri üçün seçim :

  • CURLOPT_READFUNCTION: .

curl_exec

curl_exec - CURL seansını icra edir.

Təsvir

bool curl_exec(resurs ch)

Bu funksiya CURL sessiyasını işə saldıqdan və həmin sessiya üçün bütün seçimlər artıq təyin edildikdən sonra çağırılmalıdır. Onun məqsədi sadəcə əvvəlcədən təyin edilmiş CURL sessiyasını yerinə yetirməkdir (parametrdə göstərilmişdir ch).

curl_close

curl_close - CURL sessiyasını bağlayır.

Təsvir

boş curl_close(resurs ch)

Bu funksiya CURL sessiyasını bağlayır və bütün resursları buraxır. CURL sapı ch da silinir.

curl_errno

curl_errno - sonuncu səhv nömrəsini ehtiva edən tam ədədi qaytarır.

Təsvir

Nümunə 1: Yeni CURL sessiyasının işə salınması və veb səhifənin bərpası.
Nümunə 2: example.com-u əldə etmək üçün PHP-nin CURL modulundan istifadə
Nümunə 3: PHP-nin CURL-dən istifadə edərək URL əlçatanlığının yoxlanılması
Nümunə 4: PHP-nin CURL-dən istifadə edərək əldə edilən başlığın gövdədən ayrılması
Nümunə 5: PHP-nin CURL-dən istifadə edərək Referal URL-nin Müəyyən edilməsi
problem: curl_setopt($ch,FOLLOW_LOCATION,1); xəta: open_basedir və safe_mode ilə problem həll yolu: artıq kimsə tərəfindən işlənib hazırlanmış funksiya həll n 2: eyni funksiya, dəyişdirilmiş, mənim üçün əla işləyir..= $curl_max_loops) ( $curl_loops = 0; FALSE qaytarın; ) curl_setopt($ch, CURLOPT_HEADER, doğru); curl_setopt($ch, CURLOPT_RETURNTRANSFER, doğru); $data = curl_exec($ch); list($header, $data) = partlatmaq("\n\n", $data, 2); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($http_code == 301 || $http_code == 302) ( $matches = ; preg_match("/Məkan:(.*?)\n/", $header, $matches); $url = @parse_url(trim) (array_pop($matches))); if (!$url) ( //$curl_loops = 0-a yönləndirmək üçün url işlənə bilmədi; $data qaytarın; ) $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)) ; if (!$url["sxem"]) $url["sxem"] = $last_url["sxem"] if (!$url["host"]) $url["host"] = $son_url[; "host"]; if (!$url["path"]) $url["path"] = $last_url["path"] $new_url = $url["host"] . $url["yol"] .($url["query"]?".$url["query"]:""); curl_setopt($ch, CURLOPT_URL, $new_url) ; debug("Yönləndirilir", $ new_url); return curl_redir_exec($ch); else ( $curl_loops=0; return $data; ) ?>
sadəcə FOLLOW_LOCATION olmadan bu funksiyadan istifadə edin və işləməlidir. problem onda idi ki, əgər http_code 301 oe 302-dən fərqlidirsə, məlumatı qaytardığınız xəttə çatdığınız zaman, $data köhnəlmiş məlumatlara malikdir və ya heç biri yoxdur. ona görə də $debbbb işi görür.
Nümunə 6: CURL PHP istifadə edərək başlıqdan kukinin təhlili
Bəzən serverin php-parametrləri səbəbindən CURLOPT_COOKIEJAR və CURLOPT_COOKIEFILE-dən istifadə edə bilməzsiniz (Onlar deyirlər ki, siz bu seçimlərdən istifadə edərək serverdən hər hansı fayl ala bilərsiniz). Budur həll yolu 1)CURLOPT_FOLLOWLOCATION-dan istifadə etməyin 2)Curl_setopt($ch, CURLOPT_HEADER, 1) 3)Başlıq kukilərindən bu kimi alın: preg_match_all("|Set-Cookie: (.*);|U", $content, $results); $cookies = implode(";", $nəticələr); 4) curl_setopt($ch, CURLOPT_COOKIE, $cookies) istifadə edərək onları təyin edin;
Nümunə 7: CURL PHP istifadə edərək başlıqdan kuki təhlili
Yevgenin daha əvvəl qeyd etdiyi kimi, bəzən biz CURLOPT_COOKIEJAR və CURLOPT_COOKIEFILE-dən istifadə edə bilmirik. Aşağıda yanvar ayında yazdığım başlıq geri çağırış funksiyası sizə cURL sorğuları arasında kukiləri saxlamağa imkan verir. Kukilər bütün sorğular zamanı hətta yönləndirmə zamanı da $ch-ə əlavə edilir, beləliklə siz edə bilərsiniz. onu CURLOPT_FOLLOWLOCATION ilə birlikdə istifadə edin: funksiya read_header($ch, $string) ( qlobal $location; #keep track of location/redirects global $cookiearr; #burada kukiləri qlobal $ch; # ^funksiyanın parametrini ləğv edir. $ch # bu, yaxşıdır, çünki biz # yeni kuki ilə qlobal $ch-i yeniləməliyik $length = strlen($string); if(!strncmp($string, "Location:", 9)) ( #heep track son redirect $location = trim(substr($string, 9, -1)); if(!strncmp($string, "Set-Cookie:", 11)) ( #cookiestr = trim(substr( $)) string, 11, -1)); $cookie = partlatmaq(";", $cookiestr = partlatmaq("=", $cookiename = trim(array_shift($cookie)); [$cookiename] = trim( implode("=", $cookie)); ) $cookie = ""; if(trim($string) == "") ( #execute yalnız foreach başlığının sonunda ($cookiearr as $key=>$value) ($cookie .= "$key=$value; "; ) curl_setopt ($ ch, CURLOPT_COOKIE, $cookie qaytarılması $length); ) curl_setopt($ch, CURLOPT_HEADERFUNCTION, "read_header"); Bu kod güman edir ki, siz $ch-ı hər dəfə başlatmadan yenidən istifadə edəcəksiniz (əvvəlcə curl_init-ə yalnız bir dəfə zəng edin). Əgər kodunuzun istənilən nöqtəsində $ch-i yenidən işə salmaq lazımdırsa, siz $cookiearr-da hazırda saxlanılan kukilərə daxil ola və onları yeni $ch-ə daxil edə bilərsiniz. Bu funksiyanı müntəzəm ifadələrlə kifayət qədər təcrübəm olmadan əvvəl yazmışdım ki, siz burada heç bir preg_match zəngləri tapa bilməyəcəksiniz. Mən bu kodu uzun müddətdir və gmail, yahoo, hotmail, aol və s. daxil olmaq üçün heç bir problem olmadan istifadə etmişəm. Axtardığım şeyə çatmazdan əvvəl giriş və bir neçə səhifədən keçin.
Misal 8: CURL PHP-dən istifadə edərək başlıq yükləyicisinin qurulması
CURL istifadə edərək, əldə edilmiş məlumatları əlavə olaraq yenidən ötürmək üçün ikili məlumatları əlavə kimi qaytaran üçüncü tərəf skriptinə zəng etməli oldum. Problem onda idi ki, üçüncü tərəf skripti bəzən HTTP xətalarını qaytarırdı və mən belə hallarda sıfır uzunluqlu qoşmadan qaçmaq istədim. CURLOPT_FAILONERROR və CURLOPT_HEADERFUNCTION geri çağırışının birləşməsi üçüncü tərəf skriptinin HTTP xətalarını səliqəli şəkildə emal etməyə kömək etdi: funksiya curlHeaderCallback($resURL, $strHeader) ( if (preg_match("/^HTTP/i", $strHeader($strHeader)str)) (ader) header("Content-Disposition: attachment; filename="file-name.zip""); return strlen($strHeader) $resURL = curl_init("http://site/"); curl_setopt($resURL, CURLOPT_BINARYTRANSFER, 1); curl_setopt($resURL, CURLOPT_HEADERFUNCTION, "curlHeaderCallback"); curl_setopt($resURL, CURLOPT_FAILONERROR, 1); curl_exec($resURL); $intReturnCode = curl_getinfo($resURL, CURLINFO_HTTP_CODE); curl_close($resURL); if ($intReturnCode != 200) ( "Kodla səhv: " . $intReturnCode; ) çap edin
Nümunə 9. Səhifənin faylda saxlanması və CURL PHP istifadə edərək ötürmə sürətinin hesablanması
WritePageToFile("http://es.php.net", "es.php.net.txt"); funksiyası WritePageToFile($sHTMLpage, $sTxtfile) ( $sh = curl_init($sHTMLpage); $hFile = FOpen($sTxtfile, "w"); curl_setopt($sh, CURLOPT_FILE, $hFile); curl_setopt($sh, CURLOPT_ 0); curl_exec($sh); $sAverageSpeedDownload = curl_getInfo($sh, CURLINFO_SPEED_DOWNLOAD $sAverageSpeedUpload = curl_getInfo($sh, CURLINFO_SPEED_UPLOAD);
"; əks-səda "Orta yükləmə sürəti == " . $sAverageSpeedDownload . " 
"; əks-səda "Orta yükləmə sürəti == " . $sAverageSpeedUpload ."
"; əks-səda"
"; $aCURLinfo = curl_getInfo($sh); print_r($aCURLinfo); echo "
"; curl_close($sh); FClose ($hFile); echo "( Hostinqin eyni yolunda "".$sTxtfile."" faylına baxın." " Bu skriptin PHP olduğu yerə.).
"; }
Nümunə 9. SSL bağlantısı (https) vasitəsilə səhifənin qəbulu
$ch=curl_init("https://site"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // "SSL sertifikatı problemi, CA sertifikatının düzgün olduğunu yoxlayın" xətasını söndürün curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // "SSL: sertifikat mövzusu "hostname.ru" hədəf host adına uyğun gəlmir "123.123" xətasını söndürün" curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); $out=curl_exec($ch); //$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //echo "http_code=".$http_code,", err=".curl_error($ch); curl_close($ch);
Misal 10: Curl-da seanslardan və kukilərdən istifadə
$cookie_filename=sys_get_temp_dir()+"/cookie.tmp"; $curl=curl_init("http://site"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_filename);//qəbul edilmiş COOKIE-ləri faylda saxla curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_filename); // avtorizasiya zamanı ondan alınan COOKIE-ləri serverə göndərin $out=curl_exec($curl);
Nümunə 11: Curl-da fayl yükləmə və çoxölçülü massiv. CURLOPT_POSTFIELDS + CurlFile

Əgər POST sorğusunda çoxölçülü massiv və fayl göndərmək lazımdırsa, həll olunmayan problemlə qarşılaşacaqsınız. Əgər siz çoxölçülü massivi CURLOPT_POSTFIELDS-ə ötürsəniz, ikinci səviyyə "Array" sətri kimi ötürüləcək. http_build_query istifadə edərək çevirsəniz, faylı köçürə bilməyəcəksiniz.

Aşağıda PHP 5.3, PHP 5.4 və PHP 5.6-nın hər iki köhnə versiyalarında işləyəcək Curl üçün fayl yüklənməsi ilə ikiölçülü massivin kodlaşdırılması funksiyası var.

/** mürəkkəb indekslərdən istifadə edərək çoxölçülü massivi birölçülü massivə çevirir və prefiksdəki @-ni Curl-də istifadə üçün CurlFile ilə əvəz edir * @param $inputArray * @param string $inputKey * @return array $requestVars = massiv ("id" => massiv( 1, 2,"id"=>1234), "ad" => "log", "logfile" => "@/tmp/test.log"); əldə edirik: ["id"]=> int(1) ["id"]=> int(2) ["id"]=> int(1234) ["ad"]=> string(3) "log" [ "logfile"]=> string(13) "/tmp/test.log" ) */ function convertToStringArray($inputArray, $inputKey="") ( $resultArray=; foreach ($inputArray as $key => $value) ) ( $tmpKey = (bool)$inputKey ? $inputKey."[$key]" : $key; if (is_array($value)) ( $resultArray+=convertToStringArray($value, $tmpKey); ) elseif ($value) = = "@")( $resultArray[$tmpKey] = (class_exists(" CURLFile ", false)) ? new CurlFile(ltrim($value, "@")) : $value; ) else ( $resultArray[$tmpKey ] = $value; ) ) return $resultArray ) // yoxlayın $requestVars = array("id" => array(1, 2,"id"=>1234), "name" => "log", "logfile" " => "@/tmp/test.log"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "htmlweb.ru"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, convertToStringArray($requestVars)); $res = curl_exec($ch); curl_close($ch); Tətbiq olunub

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

curl_setopt — CURL sessiyası üçün parametr təyin edir

Parametrlərin siyahısı

cURL tutacağından əldə edilmişdir curl_init().

Qurulacaq parametr CURLOPT_XXX.

Seçim parametrinin dəyəri.

bool:

Parametr Qeydlər
CURLOPT_AUTOREFERER DOĞRU sahənin avtomatik qurulması üçün İstinad edən: başlıq tərəfindən yönləndirilən sorğularda Məkan:.
CURLOPT_BINARYTRANSFER DOĞRU sabitdən istifadə edərkən xam cavabı qaytarmaq CURLOPT_RETURNTRANSFER. PHP 5.1.3-dən etibarən bu seçim artıq tələb olunmur: opsiyadan istifadə edərkən xam çıxış həmişə qaytarılır CURLOPT_RETURNTRANSFER.
CURLOPT_COOKIESESSION DOĞRU cari sessiyaya kukilərin yeni "sessiyasına" başlamaq üçün göstəriş vermək. Bu, libcurl-un əvvəlki sessiyadan yükləməli olduğu hər hansı "sessiya" kukilərinə məhəl qoymamasına səbəb olacaq. Varsayılan olaraq, libcurl "sessiya" olub-olmamasından asılı olmayaraq həmişə bütün kukiləri saxlayır və yükləyir. "Sessiya" kukiləri müddəti bitməyən kukilərdir və yalnız cari "sessiya" üçün mövcud olmalıdır.
CURLOPT_CERTINFO DOĞRU axın etmək üçün SSL sertifikatı məlumatını çıxarmaq STDERR təhlükəsiz əlaqələri ilə. cURL 7.19.1-də əlavə edilmişdir. PHP 5.3.2-dən başlayaraq mövcuddur. Düzgün işləmək üçün bu seçimin aktivləşdirilməsini tələb edir CURLOPT_VERBOSE.
YALNIZ CURLOPT_CONNECT_ DOĞRU kitabxanaya lazımi proksi autentifikasiyasını və əlaqənin qurulmasını yerinə yetirməyi bildirir, lakin məlumatları ötürmür. Bu seçim HTTP, SMTP və POP3 üçün həyata keçirilir. 7.15.2-də əlavə edilmişdir. PHP 5.5.0-dan əldə edilə bilər.
CURLOPT_CRLF DOĞRU Unix sətir sonlarını CRLF-ə çevirmək üçün.
CURLOPT_DNS_USE_GLOBAL_CACHE DOĞRU qlobal DNS keşindən istifadə etmək. Bu seçim mövzu təhlükəsiz deyil və defolt olaraq aktivdir.
CURLOPT_FAILONERROR DOĞRU qəbul edilmiş HTTP kodu 400-dən böyük və ya ona bərabər olarsa, uğursuzluq haqqında ətraflı hesabat üçün. Standart davranış koda məhəl qoymadan səhifəni normal olaraq qaytarır.
CURLOPT_FILETIME DOĞRU uzaq sənədin dəyişdirilmə tarixini əldə etməyə çalışmaq. Bu dəyər funksiyadan CURLINFO_FILETIME parametrindən istifadə etməklə əldə edilə bilər curl_getinfo().
CURLOPT_FOLLOWLOCATION DOĞRU hər hansı bir başlığı izləmək "Yer:" cavabında server tərəfindən göndərilir (qeyd edək ki, bu rekursiv olaraq baş verir, PHP göndərilən hər hansı başlıqları izləyəcək "Yer:", sabit təyin edildiyi hallar istisna olmaqla CURLOPT_MAXREDIRS).
CURLOPT_FORBID_REUSE DOĞRU emalı başa çatdıqdan sonra əlaqəni yenidən istifadə edilə bilməməsi üçün bağlamağa məcbur etmək.
CURLOPT_FRESH_CONNECT DOĞRUönbelleğe alınmış bir əlaqə əvəzinə yeni bir əlaqə istifadə etməyə məcbur etmək.
CURLOPT_FTP_USE_EPRT DOĞRU aktiv FTP yükləmələri üçün EPRT (və LPRT) istifadə etmək. istifadə edin YANLIŞ EPRT və LPRT-ni söndürmək və yalnız PORT-dan istifadə etmək üçün.
CURLOPT_FTP_USE_EPSV DOĞRU FTP köçürmələri zamanı EPSV əmrinin ilkin sınağı üçün. Əgər əmr uğursuz olarsa, o, PASV-ə qayıdacaq. Quraşdırın YANLIŞ EPSV-ni söndürmək üçün.
CURLOPT_FTP_CREATE_MISSING_DIRS DOĞRU FTP əməliyyatı mövcud olmayan bir yola rast gələrsə, itkin kataloqlar yaratmaq.
CURLOPT_FTPAPPEND DOĞRU uzaq faylı mövcud faylın üzərinə yazmaq əvəzinə sonuna qədər yazmaq.
CURLOPT_TCP_NODELAY TCP_NODELAY seçiminin təyin olunmalı və ya silinməli olduğunu daimi olaraq müəyyən edir (1 = təyin, 0 = təmizlənmiş). Varsayılan olaraq seçim silinir. PHP 5.2.1-dən libcurl 7.11.2 və ya daha sonrakı versiyalar üçün mövcuddur.
CURLOPT_FTPASCII Ləqəb CURLOPT_TRANSFERTEXT. Bunun əvəzinə istifadə edin.
CURLOPT_FTPLISTONLY DOĞRU FTP qovluğundan yalnız adların siyahısını qaytarmaq üçün.
CURLOPT_HEADER DOĞRU başlıqları çıxışa daxil etmək.
CURLINFO_HEADER_OUT DOĞRU sapı sorğu sətirini izləmək üçün. PHP 5.1.3-dən başlayaraq mövcuddur. Prefiks CURLINFO_ xüsusi olaraq istifadə olunur.
CURLOPT_HTTPGET DOĞRU HTTP sorğu metodunu GET metoduna sıfırlamaq üçün. GET defolt olduğundan, bu parametr yalnız sorğu metodu əvvəllər dəyişdirildikdə lazımdır.
CURLOPT_HTTPPROXYTUNNEL DOĞRU müəyyən HTTP proxy vasitəsilə tunel etmək.
CURLOPT_MUTE DOĞRU cURL funksiyası mesajlarını tamamilə söndürmək üçün. cURL 7.15.5-də silindi (CURLOPT_RETURNTRANSFER seçimi istifadə edilə bilər)
CURLOPT_NETRC DOĞRUəlaqənin qurulduğu uzaq sayt üçün giriş və parol üçün ~/.netrc faylını oxumaq.
CURLOPT_NOBODY DOĞRU cavab orqanını çıxışdan çıxarmaq. Sorğu metodu HEAD olaraq təyin edilib. Bu parametrin dəyişdirilməsi YANLIŞ onu geri GET-ə dəyişmir.
CURLOPT_NOPROGRESS

DOĞRU cURL köçürmələrində irəliləyiş göstəricisini söndürmək üçün.

Şərh:

PHP bu parametri avtomatik olaraq təyin edir DOĞRU, onu yalnız sazlama məqsədləri üçün dəyişdirin.

CURLOPT_NOSIGNAL DOĞRU PHP prosesinə siqnal göndərən hər hansı cURL funksiyasına məhəl qoymamaq. Vaxt aşımı parametrlərinin düzgün işləməsinə imkan vermək üçün bu seçim çox yivli SAPI-lərdə defolt olaraq aktiv edilir.
CURLOPT_POST DOĞRU müntəzəm HTTP POST istifadə etmək. Bu POST metodu normaldan istifadə edir , adətən HTML formalarında istifadə olunur.
CURLOPT_PUT DOĞRU HTTP PUT metodundan istifadə edərək faylı yükləmək üçün. İstifadə olunan fayl seçimlərdən istifadə edərək təyin edilməlidir CURLOPT_INFILECURLOPT_INFILESIZE.
CURLOPT_RETURNTRANSFER DOĞRU köçürmənin nəticəsini sətir kimi qaytarmaq üçün curl_exec() brauzerə birbaşa çıxış əvəzinə.
CURLOPT_SAFE_YÜKLƏ DOĞRU prefiks dəstəyini söndürmək üçün @ yüklənmiş fayllar üçün CURLOPT_POSTFIELDS, bu da dəyərlərin keçdiyini bildirir @ sahələr kimi təhlükəsiz şəkildə ötürülə bilər. Prefiks əvəzinə seçimdən istifadə edə bilərsiniz CURLFayl d. PHP 5.5.0-da standart dəyərlə əlavə edilib YANLIŞ. PHP 5.6.0-da defolt olaraq bərabər oldu DOĞRU.
CURLOPT_SSL_VERIFYPEER YANLIŞ cURL-in host sertifikatını yoxlamasını dayandırmaq üçün. Parametrdən istifadə edərək yoxlanılacaq alternativ sertifikatlar müəyyən edilə bilər CURLOPT_CAINFO və ya parametrlə müəyyən edilmiş sertifikatları olan kataloq CURLOPT_CAPATH. Defoltdur DOĞRU cURL 7.10 versiyasından bəri. Standart paylama cURL 7.10 versiyasından başlayaraq quraşdırılır.
CURLOPT_TRANSFERTEXT DOĞRU FTP köçürmələri üçün ASCII rejimindən istifadə etmək. LDAP istifadə edərkən verilənlər HTML əvəzinə düz mətnlə qaytarılır. Windows sistemlərində mövzu STDOUT ikili rejimə təyin edilmir.
CURLOPT_UNRESTRICTED_AUTH DOĞRU yönləndirmələr zamanı giriş və şifrəni göndərməyə davam etmək üçün ( CURLOPT_FOLLOWLOCATION), host adı dəyişsə belə.
CURLOPT_YÜKLƏ DOĞRU faylı serverə yükləməyə hazırlamaq.
CURLOPT_VERBOSE DOĞRUəlavə məlumatları göstərmək üçün. Nəticəni axına yazır STDERR, və ya parametrlə müəyyən edilmiş fayl CURLOPT_STDERR.

Aşağıdakı seçim parametrləri üçün dəyər parametri tipli olmalıdır tam:

Parametr Dəyər dəyərini təyin edin Qeydlər
CURLOPT_BUFFERSIZE Hər oxumaq üçün istifadə olunan buferin ölçüsü. Ancaq bu sorğunun yerinə yetiriləcəyinə heç bir zəmanət yoxdur. cURL 7.10-da əlavə edilmişdir.
CURLOPT_CLOSEPOLICY Sabitlərdən biri CURLCLOSEPOLICY_*.

Şərh:

Bu seçim heç vaxt cURL-də tətbiq olunmadığı və işləmədiyi üçün köhnəlmişdir.

PHP 5.6.0-da silindi.
CURLOPT_CONNECTTIMEOUT Qoşulmağa çalışarkən gözlənilən saniyələrin sayı. Qeyri-müəyyən müddətə gözləmək üçün 0-dan istifadə edin.
CURLOPT_CONNECTTIMEOUT_MS Qoşulmağa cəhd edərkən gözlənilən millisaniyələrin sayı. Qeyri-müəyyən müddətə gözləmək üçün 0-dan istifadə edin. Əgər libcurl sistemin standart ad həlledicisindən istifadə etməklə tərtib edilibsə, o zaman əlaqə hələ də minimum icazə verilən 1 saniyəlik fasilə ilə tam ikinci gözləmədən taym-aut kimi istifadə edəcək. cURL 7.16.2 versiyasında əlavə edilib. PHP 5.2.3-dən başlayaraq mövcuddur.
CURLOPT_DNS_CACHE_TIMEOUT DNS qeydlərinin yaddaşda saxlandığı saniyələrin sayı. Varsayılan olaraq, bu parametr 120 (2 dəqiqə) təşkil edir.
CURLOPT_FTPSSLAUTH FTP identifikasiyası metodu (aktiv rejimdə): CURLFTPAUTH_SSL(Əvvəlcə SSL yoxlanılır), CURLFTPAUTH_TLS(ilk öncə TLS yoxlanılır) və ya CURLFTPAUTH_DEFAULT(cURL özü qərar verir). cURL 7.12.2 versiyasında əlavə edilib.
CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE (standart olaraq, CURL hansı versiyanın istifadə olunacağını seçir), CURL_HTTP_VERSION_1_0 (HTTP/1.0-ı məcbur edir) və ya CURL_HTTP_VERSION_1_1 (HTTP/1.1-i məcbur edir).
CURLOPT_HTTPAUTH

Bitwise operatorundan istifadə edə bilərsiniz | (və ya) bir neçə metodu birləşdirmək. Bu halda cURL serverdə dəstəklənən avtorizasiya üsulları üçün sorğu keçirəcək və ən yaxşısını seçəcək.

CURLAUTH_ANY ləqəbdir CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLAUTH_ANYSAFE ləqəbdir CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLOPT_INFILESIZE Uzaq serverə fayl yükləyərkən gözlənilən fayl ölçüsü, baytlarla. Nəzərə alın ki, bu seçimdən istifadə etməklə bu dəyərdən artıq əlavə məlumatların göndərilməsi dayandırılmayacaq, çünki göndərilən məlumatlar nəticədən asılıdır CURLOPT_READFUNCTION.
CURLOPT_LOW_SPEED_LIMIT Məlumat ötürmə sürəti üçün yuxarı hədd, saniyədə baytla. Doğrulama daxilində baş verir CURLOPT_LOW_SPEED_TIME saniyə, bundan sonra PHP transferi çox yavaş hesab edir və onu dayandırır.
CURLOPT_LOW_SPEED_TIME Köçürmə sürətinin keçməməsi lazım olan maksimum saniyə sayı CURLOPT_LOW_SPEED_LIMIT, əks halda PHP transferi çox yavaş kimi qeyd edəcək və onu dayandıracaq.
CURLOPT_MAXCONNECTS Davamlı bağlantıların maksimum sayı. Həddinə çatdıqda, parametr hansı əlaqənin bağlanacağını müəyyən etmək üçün istifadə olunur. CURLOPT_CLOSEPOLICY.
CURLOPT_MAXREDIRS Qəbul edilən yönləndirmələrin maksimum sayı. Bu seçimi seçimlə birlikdə istifadə edin CURLOPT_FOLLOWLOCATION.
CURLOPT_PORT Alternativ əlaqə portu.
CURLOPT_POSTREDIR Seçim aktivləşdirildikdə HTTP POST metodunun işlənib-işlənməsinin olub-olmamasını müəyyən etmək üçün 1 (301 Daimi Köçürülmüş), 2 (302 Tapılmış) və 4 (303 Digər Bax) olan bit maskası CURLOPT_FOLLOWLOCATION göstərilən yönləndirmə növü baş verərsə. cURL 7.19.1-də əlavə edilmişdir. PHP 5.3.2-dən etibarən mövcuddur.
CURLOPT_PROTOKOLLAR

Dəyərlərin bit maskası CURLPROTO_*. Bu maska ​​libcurl tərəfindən istifadə edilən protokolları məhdudlaşdırır. Bu, libcurl-un çoxlu sayda protokollarla işləməsinə imkan verir və müəyyən köçürmələrin işini onların yalnız bir hissəsi ilə məhdudlaşdırır. Varsayılan olaraq, libcurl bütün dəstəklənən protokollardan istifadə edir. Həmçinin parametrə baxın CURLOPT_REDIR_PROTOCOLS.

Düzgün protokol dəyərləri: CURLPROTO_HTTP , CURLPROTO_HTTPS , CURLPROTO_FTP , CURLPROTO_FTPS , CURLPROTO_SCP , CURLPROTO_TELNET , CURLPROTO_LDAP , CURLPROTOLPROTO_, LPROTO_TFTP, CURLPROTO_ALL

CURLOPT_PROXYAUTH Proksi serverə qoşulduqda istifadə edilən HTTP avtorizasiya üsulları. Parametr üçün təsvir edilən eyni bit maskalarından istifadə edin CURLOPT_HTTPAUTH. Hazırda proksi icazəsi üçün yalnız CURLAUTH_BASIC və CURLAUTH_NTLM dəstəklənir. cURL 7.10.7 versiyasında əlavə edilib.
CURLOPT_PROXYPORT Bağlantının edildiyi proxy serverin port nömrəsi. Bu nömrə də parametrdən istifadə etməklə təyin edilə bilər CURLOPT_PROXY.
CURLOPT_PROXYTYPE Ya CURLPROXY_HTTP (standart) və ya CURLPROXY_SOCKS5 . cURL 7.10-da əlavə edilmişdir.
CURLOPT_REDIR_PROTOCOLS Dəyərlərin bit maskası CURLPROTO_*. Bu bit maskası yönləndirmə zamanı libcurl tərəfindən istifadə olunan protokolları məhdudlaşdırır (parametr aktiv olduqda CURLOPT_FOLLOWLOCATION). Bu, bəzi ötürmələr üçün yönləndirmə zamanı istifadə olunan protokollar dəstini məhdudlaşdırmağa imkan verir. Varsayılan olaraq, libcurl FILE və SCP istisna olmaqla bütün protokolları dəstəkləyir. 7.19.4-dən əvvəlki versiyalarda istisnasız olaraq bütün protokollar üçün yönləndirmə istifadə edilmişdir. Həmçinin parametr təsvirinə baxın CURLOPT_PROTOKOLLAR protokol dəyərləri olan sabitlərin siyahısı üçün. cURL 7.19.4 versiyasında əlavə edilib.
CURLOPT_RESUME_FROM Transmissiya başlanğıc ofseti, baytlarla.
CURLOPT_SSL_VERIFYHOST SSL sertifikatında ümumi adın mövcudluğunu yoxlamaq üçün 1-dən istifadə edin. Ümumi adın mövcud olduğunu və həmçinin göstərilən hosta uyğun olduğunu yoxlamaq üçün 2-dən istifadə edin. Döyüş şəraitində bu parametrin dəyəri 2 olmalıdır (standart olaraq təyin olunur). 1 dəyəri üçün dəstək cURL 7.28.1-də silindi
CURLOPT_SSLVERSION Sabitlərdən biri CURL_SSLVERSION_DEFAULT (0), CURL_SSLVERSION_TLSv1 (1), CURL_SSLVERSION_SSLv2 (2), CURL_SSLVERSION_SSLv3 (3), CURL_SSLVERSION_TLSv1_0 (4), CURL_SSLVERSION_TLSv1_1(5) və ya CURL_SSLVERSION_TLSv1_2 (6).
CURLOPT_TIMECONDITION Parametrlərin təfsiri üsulu CURLOPT_TIMEVALUE. Səhifəni geri qaytarmaq üçün CURL_TIMECOND_IFMODSINCE istifadə edin, əgər səhifə parametrdə göstərilən vaxtdan bəri dəyişibsə CURLOPT_TIMEVALUE. Səhifə dəyişdirilməyibsə, başlıq geri qaytarılacaq "304 Dəyişdirilmədi", parametr olduğunu ifadə edir CURLOPT_HEADER quraşdırılıb DOĞRU. Əks effekt üçün CURL_TIMECOND_IFUNMODSINCE istifadə edin. Defolt CURL_TIMECOND_IFMODSINCE-dir.
CURLOPT_TIMEOUT cURL funksiyalarını yerinə yetirmək üçün icazə verilən maksimum saniyə sayı.
CURLOPT_TIMEOUT_MS cURL funksiyalarını yerinə yetirmək üçün icazə verilən maksimum millisaniyə sayı. Əgər libcurl normal sistem adı həlledicisindən istifadə edilməklə qurulubsa, bu əlaqə aralığı hələ də bir saniyəyə icazə verilən minimum fasilə ilə ikinci yuvarlaqlaşdırma fasilələrindən istifadə edəcək. cURL 7.16.2 versiyasında əlavə edilib. PHP 5.2.3-dən başlayaraq mövcuddur.
CURLOPT_TIMEVALUE 1970-ci il yanvarın 1-dən etibarən saniyələrin sayı. Bu vaxt parametr tərəfindən istifadə olunacaq CURLOPT_TIMECONDITION. Varsayılan olaraq, CURL_TIMECOND_IFMODSINCE parametri istifadə olunur.
CURLOPT_MAX_RECV_SPEED_LARGE Yükləmə sürəti orta hesabla bütün ötürmə üzrə bu dəyəri (saniyədə baytla müəyyən edilir) keçərsə, orta sürəti bu parametrdən az və ya ona bərabər saxlamaq üçün yükləmə dayandırılacaq. Varsayılan olaraq, sürət məhdud deyil.
CURLOPT_MAX_SEND_SPEED_LARGE Serverə yükləmə bütün ötürmə boyu orta hesabla bu dəyəri (saniyədə baytla müəyyən edilir) keçərsə, bu parametrdən aşağı və ya ona bərabər olan orta sürəti saxlamaq üçün yükləmə dayandırılacaq. Varsayılan olaraq, sürət məhdud deyil. cURL 7.15.5 versiyasına əlavə edilib. PHP 5.4.0-dan başlayaraq mövcuddur.
CURLOPT_SSH_AUTH_TYPES Bir və ya bir neçə sabitdən ibarət bit maskası: CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD. Yüklemek CURLSSH_AUTH_HƏR libcurl-un onlardan birini müstəqil seçməsi üçün. cURL 7.16.1-də əlavə edilmişdir.
CURLOPT_IPRESOLVE Tətbiqə host adının təyin olunduğu IP ünvanının növünü seçmək icazəsi verir. Bu, IP ünvanının birdən çox versiyasından əldə edilən host adından istifadə edirsinizsə lazımdır. Mümkün dəyərlər ola bilər CURL_IPRESOLVE_HƏR NƏ, CURL_IPRESOLVE_V4, CURL_IPRESOLVE_V6, və standart olaraq CURL_IPRESOLVE_HƏR NƏ. cURL 7.10.8-də əlavə edilmişdir.

Aşağıdakı seçim parametrləri üçün dəyər parametri tipli olmalıdır simli:

Parametr Dəyər dəyərini təyin edin Qeydlər
CURLOPT_CAINFO Qovşaqların yoxlanılacağı bir və ya bir neçə sertifikatdan ibarət faylın adı. Bu parametr yalnız ilə birlikdə istifadə edildikdə məna kəsb edir CURLOPT_SSL_VERIFYPEER. Mütləq yol tələb edir.
CURLOPT_CAPATH Bir neçə CA sertifikatından ibarət kataloq. ilə birlikdə bu seçimi istifadə edin CURLOPT_SSL_VERIFYPEER.
CURLOPT_COOKIE Başlıq məzmunu "Cookie:", HTTP sorğusunda istifadə olunur. Nəzərə alın ki, çoxsaylı kukilər nöqtəli vergül və ardınca boşluq qoyulur (məsələn, " meyvə = alma; rəng = qırmızı")
CURLOPT_COOKIEFILE Kukiləri ehtiva edən faylın adı. Bu fayl Netscape formatında və ya fayla yazılmış sadəcə HTTP başlıqlarında olmalıdır. Fayl adı kimi boş sətir ötürülürsə, kukilər saxlanmayacaq, lakin onların emalı hələ də aktiv olacaq.
CURLOPT_COOKIEJAR Dəstək bağlandıqdan sonra, məsələn curl_close çağırdıqdan sonra cari köçürmənin bütün daxili kukilərinin saxlanacağı faylın adı.
CURLOPT_CUSTOMREQUEST

Əvəzində fərdi sorğu metodu istifadə olunur "AL" və ya "Baş" HTTP sorğusu edərkən. Bu sorğular üçün faydalıdır "SİL" və ya digər, daha nadir HTTP sorğuları. Düzgün mənalar kimi sözlər olardı "AL", "POST", "BAĞLA" və s; olanlar. Bütün HTTP sorğu xəttini buraya daxil etməyin. Məsələn, bir göstərici "ALIN /index.html HTTP/1.0\r\n\r\n" səhv olacaq.

Şərh:

Serverin bu cür sorğunu dəstəklədiyinə əmin olana qədər bu funksiyadan istifadə etməyin.

CURLOPT_EGDSOCKET Kimi CURLOPT_RANDOM_FILE, istisna olmaqla, fayl adı Entropy Gathering Daemon yuvasına təyin edilmişdir.
CURLOPT_ENCODING Başlıq məzmunu "Qəbul et-kodlaşdırma:". Bu, sorğunun şifrəsini açmağa imkan verir. Dəstəklənən kodlaşdırmalar var "şəxsiyyət", "söndürmək""gzip". Boş sətir ötürülürsə, "" , bütün dəstəklənən kodlaşdırma növlərini ehtiva edən başlıq göndərilir. cURL 7.10-da əlavə edilmişdir.
CURLOPT_FTPPORT FTP "PORT" əmri üçün IP ünvanını təyin etmək üçün istifadə ediləcək dəyər. "PORT" əmri serverə hansı IP ünvanına qoşulmalı olduğunu bildirir. Bu, IP ünvanı, host adı, şəbəkə interfeysi adı (Unix altında) və ya standart sistemin IP ünvanından istifadə etmək üçün sadəcə "-" ola bilər.
CURLOPT_INTERFACE İstifadə ediləcək şəbəkə interfeysinin adı. İnterfeys adı, IP ünvanı və ya host adı ola bilər.
CURLOPT_KEYPASSWD Şəxsi açardan istifadə etmək üçün parol tələb olunur CURLOPT_SSLKEY və ya CURLOPT_SSH_PRIVATE_KEYFILE. cURL 7.16.1-də əlavə edilmişdir.
CURLOPT_KRB4LEVEL Təhlükəsizlik səviyyəsi KRB4 (Kerberos 4). Aşağıdakı dəyərlərdən hər hansı biri (ən zəifdən güclüyə doğru) doğrudur: "aydın", "təhlükəsiz", "gizli", "özəl".. Göstərilən sətir verilmiş dəyərlərdən fərqlidirsə, dəyər istifadə olunacaq "özəl". Bu seçimin təyin edilməsi SIFIR KRB4 təhlükəsizliyini tamamilə söndürəcək. Hazırda KRB4 təhlükəsizliyi yalnız FTP əməliyyatları ilə işləyir.
CURLOPT_POSTFIELDS HTTP POST sorğusunda ötürülən bütün məlumatlar. Faylı ötürmək üçün fayl adından əvvəl qeyd edin @ , və həmçinin faylın tam yolundan istifadə edin. Fayl növü " formatından istifadə etməklə də müəyyən edilə bilər. ;növ=mimetip" fayl adından sonra. Bu parametr url ilə kodlanmış sətir kimi ötürülə bilər, məsələn " para1=val1¶2=val2&...", və massiv şəklində, açarları sahələrin adları, dəyərlər isə onların məzmunu olacaq. Əgər dəyər massivdirsə, başlıq Məzmun növü təyin olunacaq çoxhissəli/forma verilənləri. PHP 5.2.0-dan başlayaraq, faylları prefikslə köçürərkən @ , dəyər massiv olmalıdır. PHP 5.5.0-dan bəri, prefiks @ köhnəlmişdir və faylları istifadə edərək göndərilə bilər CURLFayl. Prefiks @ ilə başlayan dəyərlərə icazə vermək üçün deaktiv edilə bilər @ seçimi təyin etməklə CURLOPT_SAFE_YÜKLƏ mənada DOĞRU.
CURLOPT_PROXY Sorğuların yönləndiriləcəyi HTTP proxy.
CURLOPT_PROXYUSERPWD Login və parol formada yazılmışdır ":" , proxy vasitəsilə qoşulduqda istifadə olunur.
CURLOPT_RANDOM_FILE SSL üçün təsadüfi ədəd generatorunu işə salmaq üçün istifadə edilən faylın adı.
CURLOPT_RANGE Formatda yüklənəcək məlumat diapazonu "X-Y", və ya X və ya Y buraxıla bilər. HTTP protokolu həmçinin vergüllə ayrılmış çoxlu diapazonların ötürülməsini dəstəkləyir, onlar formatda müəyyən edilir. "X-Y,N-M".
CURLOPT_REFERER Başlıq məzmunu "Yönləndirici:" HTTP sorğusunda istifadə olunacaq.
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 32 hexadecimal rəqəmdən ibarət sətir. Sətir uzaq kompüterin açıq açarının MD5 yoxlama məbləği olmalıdır və yoxlama cəmi açıq açarla uyğun gələnə qədər libcurl uzaq host ilə əlaqəni sıfırlayacaq. Bu seçim yalnız SCP və SFTP istifadə edərək məlumatların ötürülməsi üçündür. cURL 7.17.1-də əlavə edilmişdir.
CURLOPT_SSH_PUBLIC_KEYFILE Açıq açarınız üçün fayl adı. Göstərilməyibsə, HOME mühit dəyişəni qurulubsa, libcurl defolt olaraq $HOME/.ssh/id_dsa.pub faylına və HOME mühit dəyişəni təyin olunmayıbsa, cari kataloqda "id_dsa.pub" faylına çevrilir. cURL 7.16.1-də əlavə edilmişdir.
CURLOPT_SSH_PRIVATE_KEYFILE Şəxsi açarınız üçün fayl adı. Göstərilməyibsə, HOME mühit dəyişəni qurulubsa, libcurl defolt olaraq $HOME/.ssh/id_dsa faylına və HOME mühit dəyişəni təyin olunmayıbsa, cari kataloqdakı "id_dsa" faylına çevrilir. Fayl parolla qorunursa, parolu istifadə edərək təyin edin CURLOPT_KEYPASSWD. cURL 7.16.1-də əlavə edilmişdir.
CURLOPT_SSL_CIPHER_LIST SSL köçürmələrində istifadə edilən şifrələrin siyahısı. Misal üçün, RC4-SHATLSv1 etibarlı şifrə siyahılarıdır.
CURLOPT_SSLCERT Düzgün formatlanmış PEM sertifikatı olan faylın adı.
CURLOPT_SSLCERTPASSWD Sertifikatdan istifadə etmək üçün parol tələb olunur CURLOPT_SSLCERT.
CURLOPT_SSLCERTTYPE Sertifikat formatı. Dəstəklənən formatlar "PEM"(standart), "DER""ENG". cURL 7.9.3-də əlavə edilmişdir.
CURLOPT_SSLENGINE Parametrdə göstərilən SSL şəxsi açarı üçün şifrələmə mühərriki identifikatoru CURLOPT_SSLKEY.
CURLOPT_SSLENGINE_DEFAULT Asimmetrik şifrələmə əməliyyatları üçün istifadə edilən şifrələmə mexanizminin identifikatoru.
CURLOPT_SSLKEY SSL şəxsi açar faylının adı.
CURLOPT_SSLKEYPASSWD

Parametr tərəfindən müəyyən edilmiş SSL şəxsi açarından istifadə etmək üçün tələb olunan gizli parol CURLOPT_SSLKEY.

Şərh:

Bu parametrdə qiymətli parol olduğundan, bu PHP skriptini təhlükəsiz yerdə saxlamağı unutmayın.

CURLOPT_SSLKEYTYPE Parametrdə göstərilən SSL şəxsi açarının növü CURLOPT_SSLKEY. Aşağıdakı əsas növlər dəstəklənir: "PEM"(standart), "DER""ENG".
CURLOPT_URL Yüklənə bilən URL. Bu parametr həmçinin seansı işə salarkən təyin edilə bilər curl_init().
CURLOPT_USERAGENT Başlıq məzmunu "İstifadəçi-Agent:", HTTP sorğusu ilə göndərildi.
CURLOPT_USERPWD Bağlantı zamanı istifadə olunan login və parol formatda göstərilmişdir ":" .

Aşağıdakı seçim parametrləri üçün dəyər parametri massiv olmalıdır:

Parametr Dəyər dəyərini təyin edin Qeydlər
CURLOPT_HTTP200ALIASES Yanlış cavablar deyil, düzgün cavablar kimi qəbul ediləcək HTTP 200 cavabları massivi. cURL 7.10.3 versiyasında əlavə edilib.
CURLOPT_HTTPHEADER Format massivində təyin edilmiş HTTP başlıqları massivi ("Məzmun növü: mətn/düz", "Məzmun uzunluğu: 100")
CURLOPT_POSTQUOTE FTP sorğusu tamamlandıqdan sonra serverdə yerinə yetirilən bir sıra FTP əmrləri.
CURLOPT_QUOTE FTP sorğusu verilməzdən əvvəl serverdə yerinə yetirilən FTP əmrləri massivi.

Aşağıdakı seçim parametri dəyərləri üçün dəyər parametri axın dəstəyi olmalıdır (məsələn, funksiya ilə qaytarılır) fopen()):

Parametr Dəyər dəyərini təyin edin
CURLOPT_FILE Köçürmə nəticəsinin yazılacağı fayl. Defolt çıxış axını STDOUT(brauzer pəncərəsi).
CURLOPT_INFILE Serverə yüklənərkən verilənlərin oxunması lazım olan fayl.
CURLOPT_STDERR Səhv axınının əvəzinə istifadə edilən alternativ səhv çıxış faylı STDERR.
CURLOPT_WRITEHEADER Cari əməliyyatın başlıqlarının yazılacağı fayl.

Aşağıdakı seçim parametri dəyərləri üçün dəyər parametri etibarlı funksiya adı və ya bağlanması olmalıdır:

Parametr Dəyər dəyərini təyin edin
CURLOPT_HEADERFUNCTION Geri çağırış funksiyası iki parametr qəbul edir. Birinci parametr cURL sapıdır, ikinci parametr yazılacaq başlıqları ehtiva edən sətirdir. Başlıqlar bu geri çağırış funksiyasından istifadə edərək yazılmalıdır. Yazılan baytların sayını qaytarmalıdır.
CURLOPT_PASSWDFUNCTION Geri çağırış funksiyası üç parametr qəbul edir. Birinci parametr cURL sapıdır, ikinci parametr parol sorğusu sətridir və üçüncü parametr maksimum parol uzunluğudur. Şifrəni ehtiva edən sətri qaytarmalıdır.
CURLOPT_PROGRESSFUNCTION

Geri çağırış funksiyası beş parametr qəbul edir. Birincisi cURL deskriptoru, ikincisi serverdən endirilməsi gözlənilən baytların ümumi sayı, üçüncüsü artıq yüklənmiş baytların sayı, dördüncüsü serverə göndərilməsi gözlənilən baytların ümumi sayıdır və beşinci artıq göndərilən baytların sayıdır.

Şərh:

Geri çağırış funksiyası yalnız seçim olduqda çağırılır CURLOPT_NOPROGRESS dəyər təyin edin YANLIŞ.

Transferi ləğv etmək üçün sıfırdan fərqli bir dəyər qaytara bilərsiniz. Bu halda bir səhv göstərilir CURLE_ABORTED_BY_CALLBACK.

CURLOPT_READFUNCTION Geri çağırış funksiyası üç parametr qəbul edir. Birinci parametr cURL sapıdır, ikinci parametr seçim vasitəsilə cURL-ə ötürülən axın resursudur. CURLOPT_INFILE, üçüncü parametr isə oxunacaq məlumatın icazə verilən maksimum miqdarıdır. Geri çağırış funksiyası, adətən ötürülən axın resursundan oxumaqla tələb olunan məlumat miqdarından çox olmayan uzunluqlu bir sətir qaytarmalıdır. Faylın sonunu bildirmək üçün boş bir sətir qaytarılmalıdır EOF.
CURLOPT_WRITEFUNCTION Geri çağırış funksiyası iki parametr qəbul edir. Birinci parametr cURL sapıdır, ikinci parametr isə yazılacaq məlumatları ehtiva edən sətirdir. Bu funksiyadan istifadə edərək məlumat saxlanılmalıdır. O, yazılmış baytların dəqiq sayını qaytarmalıdır, əks halda yükləmə xəta ilə dayandırılacaq.

Digər mənalar:

Dəyərləri qaytarın

Qaytarır DOĞRU uğurla başa çatdıqdan sonra və ya YANLIŞ xəta baş verərsə.

Dəyişikliklərin siyahısı

Versiya Təsvir
5.6.0 Seçim CURL_SAFE_YÜKLƏ indi default dəyərinə malikdir DOĞRU.
5.6.0 Seçim silindi CURLOPT_CLOSEPOLICY və onunla əlaqəli mənalar.
5.5.0 cURL resursu geri çağırış funksiyasına ilk arqument kimi əlavə edilir CURLOPT_PROGRESSFUNCTION.
5.5.0 Əlavə edilmiş seçim CURLOPT_SHARE.
5.3.0 Əlavə edilmiş seçim CURLOPT_PROGRESSFUNCTION.
5.2.10 Əlavə edilmiş variantlar CURLOPT_PROTOKOLLARCURLOPT_REDIR_PROTOCOLS.
5.1.0 Əlavə edilmiş variantlar CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTHCURLOPT_TIMECONDITION.
5.0.0 Əlavə edilmiş variantlar CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPECURLOPT_HTTP200ALIASES.

Nümunələr

Nümunə №1 CURL sessiyasının işə salınması və veb səhifənin yüklənməsi

// yeni cURL resursu yaradın
$ch = curl_init();

/* http://localhost/upload.php:
çap_r($_POST);
çap_r($_FILES);
*/

$ch = curl_init();

$data = massiv("ad" => "Foo" , "fayl" => "@/home/user/test.png" );

Curl_setopt($ch, CURLOPT_URL, "http://localhost/upload.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);

Curl_exec($ch);
?>

Bu nümunəni işlətməyin nəticəsi:

Massiv ( => Foo) Massiv ( => Massiv ( => test.png => image/png => /tmp/phpcpjNeQ => 0 => 279))

Qeydlər

Şərh:

Massivin ötürülməsi CURLOPT_POSTFIELDS kimi məlumatları kodlayır çoxhissəli/forma verilənləri, halbuki URL ilə kodlanmış sətirin ötürülməsi verilənləri olaraq kodlayacaq proqram/x-www-form-urlencoded.

21 cavab

Artıq bir qıvrımınız ola bilər

Heç bir şey yükləməyinizə ehtiyac olmaya bilər:

  • Əgər Windows 10 1803 və ya daha yüksək versiyanı istifadə edirsinizsə, ƏS-niz artıq konfiqurasiya edilmiş və istifadəyə hazır olan curl surəti ilə gəlir.
  • Daha çox ezoterik ehtiyaclarınız varsa (məsələn, cygwin quruluşlarına, 3-cü tərəf quruluşlarına, libcurl, başlıq fayllarına, mənbələrə və s.) Curl yükləmə sihirbazından istifadə edin. Beş suala cavab verdikdən sonra sizə yükləmə linklərinin siyahısı təqdim olunacaq.

    Qıvrımın çıxarılması və tənzimlənməsi

    Yüklənmiş paketinizdə curl.exe faylını tapın; yəqin ki, bin\ altındadır.

    Sabit diskinizdə qıvrımlar üçün daimi bir ev kimi xidmət edəcək bir yer seçin:

    • Curl-u öz qovluğu etmək istəyirsinizsə, C:\Program Files\curl\ və ya C:\curl\ edəcək.
    • Çox sayda pulsuz icra olunan faylınız varsa və PATH-ə bir çox ayrı qovluq əlavə etmək istəmirsinizsə, bu məqsəd üçün C:\Program Files\tools\ və ya C:\tools\ kimi bir qovluqdan istifadə edin.

    Curl.exe faylını qovluğa yerləşdirin. Və heç vaxt qovluğu və ya onun məzmununu köçürməyin.

    Sonra əmr satırında istənilən yerdə curl əlçatan etmək istəyə bilərsiniz. Bunu etmək üçün qovluğu PATH-ə əlavə edin, belə ki:

    1. Windows 10 Başlat menyusuna klikləyin və "mühit" yazmağa başlayın.
    2. Axtarış nəticəsini görəcəksiniz. Sistem mühiti dəyişənlərini redaktə edin. Bunu seçin.
    3. Sistem Xüsusiyyətləri pəncərəsi açılır. düyməni basın Ətraf Mühit Dəyişənləri dibdə.
    4. "Sistem Dəyişənləri" bölməsində (aşağı sahə) "Yol" dəyişənini seçin. düyməni basın Dəyişmək.
    5. " klikləyin əlavə et" və curl.exe-nin yerləşdiyi qovluğa yolu yapışdırın.
    6. klikləyin TAMAM, ehtiyac olarsa. İstənilən açıq konsol pəncərələrini bağlayın və onları yenidən açın ki, onlar yeni PATH əldə etsinlər.

    İndi istənilən əmr satırında curl yazmaqdan həzz alın. Əylənmək vaxtıdır!

    Komanda xəttindən curl işlətmək üçün

    a) Kompüterim simgesini sağ klikləyin

    b) "Xüsusiyyətlər" seçin

    d) [Qabaqcıl] sekmesine keçin - "Ətraf mühit dəyişənləri" düyməsi

    e) "Sistem Dəyişənliyi" altında "Yol" və "Düzəliş" seçin

    f) Nöqtəli vergül və sonra curl.exe faylını yerləşdirdiyiniz yerə gedən yolu əlavə edin (məsələn, D:\software\curl)

İndi əmr satırından yazaraq işləyə bilərsiniz:

Curl www.google.com

Windows 10 1803 versiyasından (və əvvəllər Insider build 17063) başlayaraq, siz artıq curl quraşdırmırsınız. Windows, birbaşa CMD-dən daxil ola biləcəyiniz C:\Windows\System32\-də öz curl.exe-ni (və tar.exe) ehtiva edir.

C:\Users\vonc>C:\Windows\System32\curl.exe --version curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL Buraxılış tarixi: Protokollar: dict faylı ftp ftps http https imap imapları pop3 pop3s smtp smtps telnet tftp Xüsusiyyətlər: AsynchDNS IPv6 Böyük Fayl SSPI Kerberos SPNEGO NTLM SSL C:\Users\vonc>C:\Windows\System32\tar.exe --versiya bsdtar 3.3.2 - libarchive 3.3.2 zlib.52.f-. ipp

Yəqin ki, Powershell v3 və sonrakı versiyaların bəzi qıvrım imkanlarına malik olan Invoke-WebRequest cmdletini ehtiva etdiyini qeyd etmək lazımdır. Yəqin ki, New-WebServiceProxy və Invoke-RestMethod cmdletlərini də qeyd etməyə dəyər.

Onların sizə uyğun olub-olmayacağına əmin deyiləm, amma Windows olmasam da, deməliyəm ki, PS-nin curl, wget və s. Onlara baxmağa dəyər ola bilər

Bu təlimatı izləyərək 3 asan addımda curl, openssl, libssh2 və zlib-in ən son versiyasını yarada bilərsiniz.

Curl statik olaraq qurulur, buna görə də lazımi dinamik iş vaxtını yaymaq lazım deyil.

Siz həmçinin əvvəlcədən qurulmuş versiyanı (x86 və x64) yükləyə bilərsiniz

Düşündüm ki, etdiyimi tam olaraq yazacam (Windows 10, 64-bit versiya):

Curl icra edilə biləni seçin.

Win64 seçin.

Universal seçin.

İstənilən birini seçin.

curl versiyası: 7.53.1 - SSL effektiv SSH aktivdir. Kredit: Viktor Şakats. Bu paket icra edilə bilən qıvrım növüdür. Bu link sizə əvvəlcədən tərtib edilmiş curl binarını əldə edəcək (və ya bəzi hallarda linkin sizi apardığı səhifədə verilmiş məlumatdan istifadə etməklə). Siz libcurl-u ortaq kitabxana/DLL kimi quraşdıra və ya quraşdırmaya bilərsiniz. Fayl 7zip istifadə edərək qablaşdırılır. 7zip fayl arxivləşdirmə formatıdır.

Yüklə klikləyin.

Yükləmələr qovluğunda curl-7.53.1-win64-mingw.7z faylı olmalıdır.

Əgər sizdə yoxdursa, 7-Zip quraşdırın.

Sağ klikləyin, 7-Zip, Buradan çıxarın. Çıxarılan faylı Z:\Tools\ kimi bir yerə kopyalayın və yapışdırın.

Zibil qovluğuna baxsanız, curl.exe faylını görəcəksiniz. Bunun üzərinə iki dəfə klikləsəniz, pəncərə tez yanıb-sönəcək və yox olacaq. Onu işə salmaq üçün əmr satırından istifadə etməlisiniz. Zibil qovluğuna gedin və sorğu etmək üçün seçimlərinizin ardınca curl daxil edin. Siz ikiqat dırnaq işarələrindən istifadə etməlisiniz. Tək dırnaqlar Windows-da curl ilə işləməyəcək.

İndi istifadəçi Path dəyişəninə curl əlavə etməlisiniz ki, proqramı işə salmaq üçün düzgün qovluğa keçməyə ehtiyac qalmasın. Bu kompüterə, Kompüterə, Sistem Xüsusiyyətlərinə, Qabaqcıl Sistem Parametrlərinə gedin, administrator kimi daxil olun (siz administrator deyilsiniz, elə deyilmi? Düzdür?). Ətraf Mühit Dəyişənləri, Sistem Dəyişənləri, siyahıya baxın və Path seçin, sonra Redaktə et, sonra Yeni, sonra məs.

Z:\Tools\curl-7.53.1-win64-MinGW\Bin

İstəyirsinizsə tərs xətt əlavə edə bilərsiniz, məncə bunun əhəmiyyəti yoxdur. Siyahının yuxarısına gələnə qədər yuxarı hərəkət düyməsini basın və onu əvvəlki ekrandan asanlıqla görə bilərsiniz. OK, OK, OK düymələrini klikləyin, sonra əmr satırını açın və istənilən istifadəçi kimi istənilən qovluqdan curl yazaraq curl işlədə bilərsiniz. İkiqat sitatlarınızı unutmayın.

Almaq istədiyim cavab budur.

Yükləmə prosesini axtarırdım Qıvrım və hər yerdə faylı kopyala dedilər System32-də curl.exe, lakin onlar birbaşa keçid vermədilər. buna görə də burada əylənə bilərsiniz curl.exe asan bin qovluğu Sadəcə

onu açın və sonra exe faylını alacağınız bin qovluğuna keçin

Bu quraşdırıcı mənim üçün asanlaşdırdı http://www.confusedbycode.com/curl/

"Windows üçün cURL-i bir neçə kliklə quraşdıra bilərsiniz. Sadəcə aşağıdakı cədvəldən quraşdırıcını endirin və işə salın və Quraşdır düyməsini basın. Standart quraşdırma daxildir.

Biz tez-tez İnternetdən müxtəlif faylları, məsələn, icra olunan proqram fayllarını, skript fayllarını, mənbə arxivlərini yükləməli oluruq. Ancaq bunu həmişə brauzer vasitəsilə etmək lazım deyil. Bir çox hallarda terminal vasitəsilə bütün hərəkətləri yerinə yetirmək daha asandır. Çünki bu yolla siz prosesi avtomatlaşdıra bilərsiniz. Digər tərəfdən, veb ustaları zaman-zaman veb saytın əlçatanlığını yoxlamalı, göndərilən və qəbul edilən başlıqları yoxlamalı və daha çox şey etməlidirlər.

Bənzər bir sıra problemləri və problemləri həll etmək üçün curl yardım proqramından istifadə edə bilərsiniz. Bu, saytdakı istifadəçi hərəkətlərini simulyasiya etmək də daxil olmaqla, daha geniş problemləri həll etməyə imkan verir. Bu yazıda curl-dan necə istifadə edəcəyimizi, bunun nə olduğunu və bu proqramın nə üçün lazım olduğunu nəzərdən keçirəcəyik.

Əslində, curl Linux və ya Windows üçün sadəcə bir əmr satırı yardım proqramı deyil. Bu, URL səhifələri ilə işləmək və faylları ötürmək üçün əsas imkanları həyata keçirən kitabxanalar toplusudur. Kitabxana protokollarla işləməyi dəstəkləyir: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, həmçinin POP3, IMAP və SMTP. Səhifələrdə istifadəçi hərəkətlərini və URL-lərlə digər əməliyyatları simulyasiya etmək üçün əladır.

Curl kitabxanasına dəstək bir çox müxtəlif proqramlaşdırma dillərinə və platformalarına əlavə edilmişdir. Curl yardım proqramı bu kitabxana üçün müstəqil sarğıdır. Bu məqalədə diqqət yetirəcəyimiz bu yardım proqramıdır.

curl əmri

Curl linux əmrinin necə istifadə oluna biləcəyinin təsvirinə keçməzdən əvvəl, yardım proqramının özünə və bizə lazım olacaq əsas seçimlərinə baxaq. Faydalı proqramın sintaksisi çox sadədir:

$ curl variantları linki

İndi əsas variantlara baxaq:

  • -# - yükləmə zamanı sadə tərəqqi çubuğunu göstərmək;
  • -0 - http 1.0 protokolundan istifadə edin;
  • -1 - tlsv1 şifrələmə protokolundan istifadə edin;
  • -2 - sslv2 istifadə edin;
  • -3 - sslv3 istifadə edin;
  • -4 - ipv4 istifadə edin;
  • -6 - ipv6 istifadə edin;
  • - USER_AGENT-inizi göstərin;
  • -b- kuki faylda saxlamaq;
  • -c- fayldan serverə kuki göndərmək;
  • -C- faylı fasilə nöqtəsindən və ya müəyyən edilmiş ofsetdən endirməyə davam edin;
  • -m- serverdən cavab üçün maksimum gözləmə müddəti;
  • -d- POST metodundan istifadə edərək məlumat göndərmək;
  • -D- server tərəfindən qaytarılmış başlıqları faylda saxlamaq;
  • -e- istifadəçinin hansı saytdan gəldiyini göstərən Referer-uri sahəsini təyin edin;
  • -E- xarici SSL sertifikatından istifadə edin;
  • -f- səhv mesajlarını göstərməyin;
  • -F- məlumatları forma şəklində göndərmək;
  • -G- bu seçim aktivdirsə, -d seçimində göstərilən bütün məlumatlar GET metodundan istifadə edilərək ötürüləcək;
  • -H- başlıqları serverə köçürmək;
  • - yalnız HTTP başlığını qəbul edin və bütün səhifə məzmununa məhəl qoymayın;
  • -j- fayldan kukiləri oxumaq və göndərmək;
  • -J- sorğudan başlığı çıxarın;
  • -L- yönləndirmələri qəbul edir və emal edir;
  • -s- Məkandan istifadə edərək yönləndirmələrin maksimum sayı;
  • -o- səhifənin məzmununu fayla çıxarmaq;
  • -O- məzmunu serverdə səhifənin və ya faylın adı ilə faylda saxlamaq;
  • -səh- proksidən istifadə etmək;
  • --proto- istifadə ediləcək protokolu göstərin;
  • -R- uzaq faylın son modifikasiya vaxtını saxlamaq;
  • -s- səhvlər haqqında minimum məlumatı göstərmək;
  • -S- səhv mesajlarını göstərmək;
  • -T- faylı serverə yükləmək;
  • -v- ən ətraflı çıxış;
  • -y- minimum yükləmə sürəti;
  • -Y- maksimum yükləmə sürəti;
  • -z- faylı yalnız göstərilən vaxtdan gec dəyişdirildikdə yükləyin;
  • -V- versiyanı göstərin.

Bu heç də curl linux üçün bütün seçimlər deyil, lakin istifadə etməli olduğunuz əsasları sadalayır.

Curl necə istifadə olunur?

Biz curl yardım proqramı ilə işləmək nəzəriyyəsi ilə bağlı hər şeyi əhatə etdik, indi təcrübəyə keçmək və curl əmrinin nümunələrinə baxmaq vaxtıdır.

Ən ümumi vəzifə budur. Faylı yükləmək çox sadədir. Bunu etmək üçün fayl adını və ya html səhifəsini parametrlərdəki yardım proqramına ötürmək kifayətdir:

curl https://raw.githubusercontent.com/curl/curl/master/README.md

Ancaq burada sizi bir sürpriz gözləyir: faylın bütün məzmunu standart çıxışa göndəriləcək. Onu istənilən fayla yazmaq üçün istifadə edin:

curl -o readme.txt https://raw.githubusercontent.com/curl/curl/master/README.md

Və nəticədə ortaya çıxan faylın serverdəki fayl ilə eyni adlandırılmasını istəyirsinizsə, -O seçimindən istifadə edin:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md

curl -# -C - -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz

Lazım gələrsə, bir əmrlə bir neçə fayl yükləyə bilərsiniz:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

Administrator üçün faydalı ola biləcək başqa bir şey faylı yalnız dəyişdirildikdə yükləməkdir:

curl -z 21-dekabr-17 https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

Sürət həddi

-Y seçimindən istifadə edərək şəbəkəni həddən artıq yükləməmək üçün yükləmə sürətini tələb olunan həddə məhdudlaşdıra bilərsiniz:

curl --limit-rate 50K -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz

Burada yüklənə bilən saniyədə kilobaytların sayını təyin etməlisiniz. Sürət kifayət deyilsə, əlaqəni də dayandıra bilərsiniz, bunu etmək üçün -Y seçimindən istifadə edin:

curl -Y 100 -O https://raw.githubusercontent.com/curl/curl/master/README.md

Faylların ötürülməsi

curl -T login.txt ftp://speedtest.tele2.net/upload/

Və ya faylın HTTP vasitəsilə göndərildiyini yoxlayaq, bunun üçün xüsusi bir xidmət var:

curl -T ~/login.txt http://posttestserver.com/post.php

Cavabda, yardım proqramı yüklənmiş faylı harada tapa biləcəyinizi sizə xəbər verəcəkdir.

POST datası göndərilir

POST metodundan istifadə edərək yalnız faylları deyil, həm də istənilən məlumatları göndərə bilərsiniz. Nəzərinizə çatdırım ki, bu üsul müxtəlif formada məlumatların göndərilməsi üçün istifadə olunur. Belə bir sorğu göndərmək üçün -d seçimindən istifadə edin. Test üçün eyni xidmətdən istifadə edəcəyik:

curl -d "field1=val&fileld2=val1"http://posttestserver.com/post.php

Bu təqdimetmə seçimindən razı deyilsinizsə, formanı təqdim edirmiş kimi davrana bilərsiniz. Bunun üçün bir seçim var -F:

curl -F "parol=@pass;type=text/plain" http://posttestserver.com/post.php

Burada parol sahəsini forma ilə düz mətn kimi keçirik, eyni şəkildə bir neçə parametri keçə bilərsiniz.

Kukilərin göndərilməsi və qəbulu

Kukilər internet saytları tərəfindən müəyyən məlumatları istifadəçi tərəfində saxlamaq üçün istifadə olunur. Bu, məsələn, autentifikasiya üçün lazım ola bilər. Siz curl istifadə edərək kukiləri qəbul edə və göndərə bilərsiniz. Qəbul edilmiş kukiləri faylda saxlamaq üçün -c seçimindən istifadə edin:

curl -c cookie.txt http://posttestserver.com/post.php

Sonra curl kukisini geri göndərə bilərsiniz:

curl -b cookie.txt http://posttestserver.com/post.php

Başlığın ötürülməsi və təhlili

Bizə həmişə səhifənin məzmunu lazım deyil. Bəzən yalnız başlıqlar maraqlı ola bilər. Yalnız onları göstərmək üçün -I seçimi var:

curl -Mən https://site

Və -H seçimi serverə bir neçə və ya daha çox göndərməyə imkan verir, məsələn, If-Modified-Since başlığını keçə bilərsiniz ki, səhifə yalnız dəyişdirildikdə geri qaytarılsın:

qıvrım identifikasiyası

Əgər server HTTP Basic və ya FTP kimi ümumi autentifikasiya növlərindən birini tələb edirsə, curl bu tapşırığı çox asanlıqla idarə edə bilər. Doğrulama təfərrüatlarını müəyyən etmək üçün sadəcə onları -u seçimində iki nöqtə ilə ayıraraq qeyd edin:

curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

HTTP serverlərində autentifikasiya eyni şəkildə həyata keçiriləcək.

Proksidən istifadə

Faylları yükləmək üçün proxy serverdən istifadə etməlisinizsə, bu da çox sadədir. Proksi server ünvanını -x seçimində qeyd etmək kifayətdir:

curl -x proxysever.test.com:3128 http://google.co.in

nəticələr

Bu yazıda biz curl-dan necə istifadə edəcəyimizi, bu yardım proqramının nə üçün lazım olduğunu və onun əsas imkanlarını nəzərdən keçirdik. Onların oxşarlığına baxmayaraq, çox fərqlidirlər. Curl linux əmri daha çox serverdə müxtəlif hərəkətləri təhlil etmək və simulyasiya etmək üçün nəzərdə tutulmuşdur, wget isə faylları yükləmək və saytları taramaq üçün daha uyğundur.