curl_setopt_array în PHP

cURL și email PHP 5.1.3+

Setează mai multe opțiuni cURL dintr-o dată, dintr-un tablou. Codul devine mai scurt și mai ușor de citit.

Sintaxă
curl_setopt_array(CurlHandle $handle, array $options): bool

Ce face curl_setopt_array

În loc de zece apeluri curl_setopt, pui toate opțiunile într-un tablou cu chei CURLOPT_* și le setezi cu un singur apel. Opțiunile sunt aplicate în ordine; dacă una eșuează, funcția se oprește și returnează false.

Opțiuni des folosite: CURLOPT_RETURNTRANSFER (returnează răspunsul), CURLOPT_FOLLOWLOCATION (urmează redirecționările), CURLOPT_TIMEOUT (limită în secunde), CURLOPT_HTTPHEADER (antete), CURLOPT_USERAGENT, CURLOPT_POST și CURLOPT_POSTFIELDS, CURLOPT_CUSTOMREQUEST (pentru PUT, DELETE).

Parametri

Parametru Descriere
$handle Cererea creată cu curl_init.
$options Tabloul de opțiuni, de forma [CURLOPT_... => valoare].

Ce returnează

true dacă toate opțiunile au fost setate, altfel false.

Exemple

Exemplul 1: O funcție reutilizabilă pentru API-uri JSON

<?php
function apiGet(string $url): array
{
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_HTTPHEADER => ["Accept: application/json"],
        CURLOPT_USERAGENT => "dexblog-exemplu/1.0",
    ]);
    $raspuns = curl_exec($ch);

    return $raspuns === false ? [] : json_decode($raspuns, true);
}

$articole = apiGet("https://www.dexblog.ro/wp-json/wp/v2/posts?per_page=1&_fields=id,title");
echo $articole[0]["title"]["rendered"];

Rezultat real (necesită conexiune la internet)

Cum afectează inteligența artificială schimbările climatice în 2026: Ghid complet

Exemplul 2: Trimiterea unui formular (POST clasic)

<?php
$ch = curl_init("https://httpbin.org/post");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query(["nume" => "Ana", "mesaj" => "Bună ziua!"]),
    CURLOPT_TIMEOUT => 10,
]);

$raspuns = json_decode(curl_exec($ch), true);
print_r($raspuns["form"]);

Rezultat real (necesită conexiune la internet)

Array
(
    [mesaj] => Bună ziua!
    [nume] => Ana
)

Greșeli frecvente

  • Folosești chei text în tablou, de exemplu "CURLOPT_TIMEOUT" => 10. Cheile trebuie să fie constantele, fără ghilimele.
  • Dai un tablou direct în CURLOPT_POSTFIELDS și serverul nu primește datele cum se aștepta. Un tablou este trimis ca multipart/form-data. Pentru un formular clasic (application/x-www-form-urlencoded) folosește http_build_query($date), iar pentru JSON json_encode($date) plus antetul Content-Type.

Comenzi înrudite

  • curl_init / curl_setopt / curl_exec: Pregătește o cerere HTTP către alt server, de exemplu un API. Împreună cu curl_setopt și curl_exec, trimite cererea și primește răspunsul.
  • curl_error / curl_errno: Returnează mesajul ultimei erori cURL (domeniu inexistent, timp expirat, problemă SSL). curl_errno dă codul numeric.
  • http_build_query: Transformă un tablou în textul de interogare al unui URL (a=1&b=2), cu toate valorile codate corect.