Superglobal PHP $_REQUEST


PHP $_REQUEST

La superglobal $_REQUEST contient des données provenant de formulaires soumis, de chaînes de requête URL et de cookies HTTP.

En d'autres termes, la superglobal $_REQUEST est un tableau qui regroupe des données provenant des superglobals $_GET , $_POST et $_COOKIE .

Les superglobals PHP sont des variables intégrées qui sont toujours accessibles dans tous les contextes !

Vous pouvez accéder aux données en utilisant le mot-clé $_REQUEST suivi du nom du champ de formulaire, du paramètre de requête ou du cookie.

Remarque : Étant donné que $_REQUEST peut combiner des données provenant de différentes sources (GET, POST et COOKIE), cela peut introduire des vulnérabilités de sécurité si ce n'est pas géré avec soin. Ainsi, bien que l'utilisation de $_REQUEST puisse être pratique, il est recommandé d'utiliser les superglobals plus spécifiques $_GET , $_POST et $_COOKIE lorsque cela est possible.


Utilisation de $_REQUEST sur une requête POST

Ici, nous allons utiliser la superglobal $_REQUEST pour accéder aux données soumises via une requête POST.

Les requêtes POST sont généralement des données soumises à partir d'un formulaire HTML.

Le formulaire HTML doit avoir l'attribut method défini sur "post" et inclure des champs de saisie avec des attributs de nom. L'attribut de nom est utilisé comme clé pour accéder aux données dans le script PHP.

Voici un exemple de ce à quoi un formulaire HTML pourrait ressembler :

Fichier HTML :

<html> <body> <form method="post" action="demo_request.php"> Nom : <input type="text" name="fname"> <input type="submit"> </form> </body> </html>

Lorsque l'utilisateur clique sur le bouton de soumission, les données du formulaire sont envoyées au fichier PHP spécifié dans l'attribut action de la balise <form> .

Dans le fichier PHP, nous pouvons utiliser la variable $_REQUEST pour collecter la valeur du champ de saisie.

Fichier PHP :

$name = htmlspecialchars($_REQUEST['fname']); echo $name;

Remarque : Validez et assainissez toujours toutes les données collectées à partir de superglobals comme $_REQUEST avant de les utiliser, pour éviter des vulnérabilités de sécurité telles que les attaques XSS. La fonction htmlspecialchars() utilisée ci-dessus est une façon de le faire. Un filtrage plus robuste peut être effectué en utilisant les fonctions de filtrage PHP .

Dans l'exemple ci-dessous, nous avons mis le formulaire HTML et le code PHP dans le même fichier PHP :

Exemple

<html> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Nom : <input type="text" name="fname"> <input type="submit"> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = htmlspecialchars($_REQUEST['fname']); if (empty($name)) { echo "Le nom est vide"; } else { echo $name; } ?> </body> </html>
Essayez-le vous-même »


Utilisation de $_REQUEST sur une requête GET

Les requêtes GET peuvent être des soumissions de formulaires comme dans l'exemple ci-dessus, avec l'attribut method de l'élément <form> défini sur "get".

Les requêtes GET peuvent également provenir de données d'une chaîne de requête URL (informations ajoutées dans l'adresse URL).

Voici un exemple de ce à quoi un lien HTML avec une chaîne de requête URL pourrait ressembler :

Lien HTML avec paramètres de requête URL :

<html> <body> <a href="demo_phpfile.php?subject=PHP&web=formation-ti.org">Test $GET</a> </body> </html>

Lorsque l'utilisateur clique sur le lien, les données de la chaîne de requête sont envoyées à demo_phpfile.php .

Dans le fichier PHP, nous pouvons utiliser la variable $_REQUEST pour collecter la valeur de la chaîne de requête.

Exemple

Le fichier PHP demo_phpfile.php :

<html> <body> <?php $subject = htmlspecialchars($_GET['subject']); $web = htmlspecialchars($_GET['web']); echo "Étudiez $subject à $web."; ?> </body> </html>
Essayez-le vous-même »