Invia richiesta POST in PHP

Subodh Poudel 22 giugno 2021
  1. Usa il metodo senza CURL Usando le funzioni stream_context_create() e file_get_contents() per inviare una richiesta POST in PHP
  2. Usa il CURL per inviare la richiesta POST in PHP
  3. Crea una funzione definita dall’utente che utilizzi il CURL per inviare la richiesta POST in PHP
Invia richiesta POST in PHP

Introdurremo un metodo per inviare una richiesta POST in PHP usando il metodo CURL-less con l’uso delle funzioni http_build_query(), stream_context_create() e file_get_contents().

Ti mostreremo un metodo per inviare la richiesta POST in PHP utilizzando il CURL. CURL viene utilizzato per inviare la richiesta HTTP al server web. Il modulo CURL è generalmente preinstallato con PHP. Se non è stato installato, è necessario installarlo manualmente per inviare la richiesta del server tramite PHP.

Ti mostreremo un esempio per inviare la richiesta POST in PHP utilizzando il CURL creando una funzione. Questo metodo è molto simile al secondo metodo. Utilizza una funzione definita dall’utente per inviare la richiesta. Possiamo riutilizzare il codice che fornisce i diversi dati del post e l’URL.

Usa il metodo senza CURL Usando le funzioni stream_context_create() e file_get_contents() per inviare una richiesta POST in PHP

Possiamo inviare la richiesta POST in PHP utilizzando le funzioni come http_build_query(), stream_context_create() e file_get_contents() senza usare il CURL. Possiamo usare la funzione http_build_query() per creare parametri di query da inviare nella richiesta POST. Possiamo creare un array per specificare le intestazioni http, i metodi e il contenuto. Usiamo la funzione stream_context_create() per gestire i dati in streaming. La funzione file_get_contents() legge il contenuto dell’URL in una stringa. Usiamo le variabili globali $_POST per leggere i dati.

Ad esempio, crea la funzione http_build_query() e crea un array all’interno della funzione. Crea le chiavi name e id e i valori Robert e 1 rispettivamente nell’array. Assegna alla funzione una variabile $postdata. Creare un array per specificare il metodo, l’intestazione e il contenuto HTTP. Imposta i valori per le chiavi method, header e content come POST, Content-type: application/x-www-form-urlencoded e la variabile $postdata. Avvolgi questo array in un altro array http. Assegna l’array a una variabile $opts. Prendi $opts come parametro della funzione stream_context_create() e assegnalo a una variabile $context. Usa la funzione file_get_contents() e applica un URL http://localhost/request.php come primo parametro. Usa il valore booleano false e la variabile $context come secondo e terzo parametro. Assegna la funzione a una variabile $result e stampala. Crea un file PHP request.php ed echo i tasti name e id usando la variabile $_POST.

Nell’esempio seguente, name e id sono i dati da pubblicare utilizzando il metodo POST. Il file request.php legge i parametri della query utilizzando la variabile $_POST.

Codice di esempio:

# php 7.*
<?php
$postdata = http_build_query(
    array(
        'name' => 'Robert',
        'id' => '1'
    )
);
$opts = array('http' =>
    array(
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);
$context = stream_context_create($opts);
$result = file_get_contents('http://localhost/request.php', false, $context);
echo $result;
?>
# php 7.*
<?php
echo "Name: ". $_POST['name']. "<br>";
echo "ID: ". $_POST['id'];
?>

Produzione:

Name: Robert
ID: 1

Usa il CURL per inviare la richiesta POST in PHP

CURL sta per URL client. Possiamo usare il CURL per inviare la richiesta POST tramite lo script PHP. La versione PHP necessita del modulo curl per eseguire le diverse funzioni curl. In questo metodo, usiamo la funzione http_build_query() come nel metodo sopra per creare i parametri della query. Possiamo usare la funzione curl_init() per inizializzare la connessione CURL nello script. Usiamo le funzioni curl_setopt() con alcune opzioni come CURLOPT_URL, CURLOPT_POST e CURLOPT_POSTFIELDS. Queste opzioni impostano l’URL, richiedono una richiesta HTTP POST e POST i dati, rispettivamente. Possiamo usare la funzione curl_setopt() per restituire il contenuto dell’URL e usare la funzione curl_exec() per eseguire la richiesta POST.

Ad esempio, crea le chiavi name e id e i valori Wayne e 2 in un array $ campi. Usa l’array come parametro nella funzione http_build_query() e assegna alla funzione una variabile $postdata. Apri una connessione CURL usando la funzione curl_init() e assegnala a una variabile $ch. Scrivi tre funzioni curl_setopt() e usa la variabile $ch come primo parametro in tutte e tre le funzioni. Come secondo parametro nelle funzioni, scrivi le opzioni CURLOPT_URL, CURLOPT_POST e CURLOPT_POSTFIELDS rispettivamente nella prima, nella seconda e nella terza funzione. Imposta il terzo parametro come http://localhost/request.php, true e $postdata rispettivamente nelle tre funzioni. Chiama una funzione curl_setopt() e usa la variabile $ch come primo parametro, l’opzione CURLOPT_RETURNTRANSFER come secondo parametro e il valore booleano true come terzo parametro. Chiama la funzione curl_exec($ch) dalla variabile $result e stampa il $result. Usa lo stesso file request.php del primo metodo.

Codice di esempio:

#php 7.x
<?php
$fields = [
    'name' => 'Wayne',
    'id' => 2,
];
$postdata = http_build_query($fields);
$ch = curl_init()
curl_setopt($ch,CURLOPT_URL, 'http://localhost/request.php');
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo $result;
?>

Produzione:

Name: Wayne 
ID: 2

Crea una funzione definita dall’utente che utilizzi il CURL per inviare la richiesta POST in PHP

Possiamo creare un metodo per prendere gli input URL e i dati POST per inviare la richiesta POST. Questo metodo utilizza anche CURL come secondo metodo. Usa tutte le funzioni di ricciolo come prima. Questo metodo mira a riutilizzare il codice per più URL e dati.

Ad esempio, crea una funzione httpPost() e prendi le variabili $url e $data come argomenti. Apri la connessione curl con la funzione curl_init() e prendi la variabile $url come parametro. Usa le tre funzioni curl_setopt() come nel secondo metodo. Usa il metodo curl_exec() per eseguire i dati POST. Crea un array $data e crea le chiavi name e id e i valori Scott e 3. Chiama il metodo httpPost() con http://localhost/request.php come URL e l’array $data come dati. Questo metodo utilizza anche il file request.php come i due metodi precedenti.

Esempio di codice:

#php 7.x
<?php
function httpPost($url, $data){
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($curl);
    echo $response;
}
$data = [
    'name' => 'Scott',
    'id' => 3
];
httpPost('http://localhost/request.php', $data);
?>

Produzione:

Name: Scott 
ID: 3
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn