Envoyer une requête POST en PHP

Subodh Poudel 30 janvier 2023
  1. Utilisez la méthode sans CURL en utilisant les fonctions stream_context_create() et file_get_contents() pour envoyer une requête POST en PHP
  2. Utilisez la CURL pour envoyer la requête POST en PHP
  3. Créer une fonction définie par l’utilisateur qui utilise la CURL pour envoyer la requête POST en PHP
Envoyer une requête POST en PHP

Nous allons introduire une méthode pour envoyer une requête POST en PHP en utilisant la méthode sans CURL avec l’utilisation des fonctions http_build_query(), stream_context_create() et file_get_contents().

Nous allons vous montrer une méthode pour envoyer la requête POST en PHP en utilisant le CURL. CURL est utilisé pour envoyer la requête HTTP au serveur Web. Le module CURL est généralement pré-installé avec PHP. S’il n’a pas été installé, nous devons l’installer manuellement pour envoyer la requête du serveur en utilisant PHP.

Nous allons vous montrer un exemple pour envoyer la requête POST en PHP en utilisant le CURL en créant une fonction. Cette méthode est très similaire à la deuxième méthode. Il utilise une fonction définie par l’utilisateur pour envoyer la demande. Nous pouvons réutiliser le code fournissant les différentes données de publication et l’URL.

Utilisez la méthode sans CURL en utilisant les fonctions stream_context_create() et file_get_contents() pour envoyer une requête POST en PHP

Nous pouvons envoyer la requête POST en PHP en utilisant les fonctions comme http_build_query(), stream_context_create() et file_get_contents() sans utiliser le CURL. Nous pouvons utiliser la fonction http_build_query() pour créer des paramètres de requête à envoyer dans la requête POST. Nous pouvons créer un tableau pour spécifier les en-têtes http, les méthodes et le contenu. Nous utilisons la fonction stream_context_create() pour gérer les données streamées. La fonction file_get_contents() lit le contenu de l’url en chaîne. Nous utilisons les variables globales $_POST pour lire les données.

Par exemple, créez la fonction http_build_query() et créez un tableau à l’intérieur de la fonction. Créez respectivement les clés name et id et les valeurs Robert et 1 dans le tableau. Assignez la fonction avec une variable $postdata. Créez un tableau pour spécifier la méthode HTTP, l’en-tête et le contenu. Définissez les valeurs des clés method, header et content comme POST, Content-type: application/x-www-form-urlencoded et la variable $postdata. Enveloppez ce tableau dans un autre tableau http. Affectez le tableau à une variable $opts. Prenez le $opts comme paramètre de la fonction stream_context_create() et assignez-le à une variable $context. Utilisez la fonction file_get_contents() et appliquez une URL http://localhost/request.php comme premier paramètre. Utilisez la valeur booléenne false et la variable $context comme deuxième et troisième paramètres. Affectez la fonction à une variable $result et imprimez-la. Créez un fichier PHP request.php et faites écho aux clés name et id à l’aide de la variable $_POST.

Dans l’exemple ci-dessous, name et id sont les données à publier en utilisant la méthode POST. Le fichier request.php lit les paramètres de la requête à l’aide de la variable $_POST.

Exemple de code:

# 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'];
?>

Production:

Name: Robert
ID: 1

Utilisez la CURL pour envoyer la requête POST en PHP

CURL signifie URL du client. Nous pouvons utiliser le CURL pour envoyer la requête POST via le script PHP. La version PHP a besoin du module curl pour exécuter les différentes fonctions curl. Dans cette méthode, nous utilisons la fonction http_build_query() comme dans la méthode ci-dessus pour créer les paramètres de la requête. Nous pouvons utiliser la fonction curl_init() pour initialiser la connexion CURL dans le script. Nous utilisons les fonctions curl_setopt() avec quelques options comme CURLOPT_URL, CURLOPT_POST et CURLOPT_POSTFIELDS. Ces options définissent l’URL, demandent une requête HTTP POST et POST les données, respectivement. On peut utiliser la fonction curl_setopt() pour renvoyer le contenu de l’URL et utiliser la fonction curl_exec() pour exécuter la requête POST.

Par exemple, créez les clés name et id et les valeurs Wayne et 2 dans un tableau $fields. Utilisez le tableau comme paramètre dans la fonction http_build_query() et assignez à la fonction une variable $postdata. Ouvrez une connexion CURL à l’aide de la fonction curl_init() et affectez-la à une variable $ch. Ecrivez trois fonctions curl_setopt() et utilisez la variable $ch comme premier paramètre dans les trois fonctions. Comme deuxième paramètre dans les fonctions, écrivez les options CURLOPT_URL, CURLOPT_POST et CURLOPT_POSTFIELDS respectivement dans la première, la deuxième et la troisième fonctions. Définissez le troisième paramètre comme http://localhost/request.php, true et $postdata respectivement dans les trois fonctions. Appelez une fonction curl_setopt() et utilisez la variable $ch comme premier paramètre, l’option CURLOPT_RETURNTRANSFER comme deuxième paramètre et la valeur booléenne true comme troisième paramètre. Appelez la fonction curl_exec($ch) à partir de la variable $result et imprimez le $result. Utilisez le même fichier request.php de la première méthode.

Exemple de code:

#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;
?>

Production:

Name: Wayne 
ID: 2

Créer une fonction définie par l’utilisateur qui utilise la CURL pour envoyer la requête POST en PHP

Nous pouvons créer une méthode pour prendre les entrées URL et les données POST pour envoyer la requête POST. Cette méthode utilise également la CURL comme deuxième méthode. Il utilise toutes les fonctions curl comme auparavant. Cette méthode vise à réutiliser le code pour plusieurs URL et données.

Par exemple, créez une fonction httpPost() et prenez les variables $url et $data comme arguments. Ouvrez la connexion curl avec la fonction curl_init() et prenez la variable $url comme paramètre. Utilisez les trois fonctions curl_setopt() comme dans la deuxième méthode. Utilisez la méthode curl_exec() pour exécuter les données POST. Créez un tableau $data et créez les clés name et id et les valeurs Scott et 3. Appelez la méthode httpPost() avec le http://localhost/request.php comme URL et le tableau $data comme données. Cette méthode utilise également le fichier request.php comme les deux méthodes ci-dessus.

Exemple de code:

#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);
?>

Production:

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