$_POST
$_POST — Variables HTTP POST
Description
Un tableau associatif des valeurs passées au script courant via le protocole HTTP et la méthode POST lors de l'utilisation de la chaîne application/x-www-form-urlencoded ou multipart/form-data comme en-tête HTTP Content-Type dans la requête.
L'intérêt de ne pas passer de paramètres dans l'URL est qu'ils sont "invisibles" aux personnes capables de lire l'URL. Et qu'ils ne seront pas transmis lors d'un copier coller de cette URL.
Exemple :
var_dump($_POST);
Donne actuellement sur ce serveur :
array(0) {
}
Pour tester, vous pouvez validez ce formulaire (d'exemple) de login :
Code du formulaire :
<form method="POST" action="">
<h3>Exemple de formulaire de login</h3>
<label>Login : <input type="text" name="login" placeholder="Login..."></label>
<br/>
<label>Mot de passe : <input type="password" name="password" placeholder="Mot de passe"></label>
<br/>
<input type="submit" value="Se connecter">
</form>
Bonus & Sécurité
Lorsque vous récupérez des données via la variable $_POST, vous vous devez de respecter ces règles :
- Vérifier si le contenu que vous attendez existe avec isset
-
Vérifier la validité du contenu :
- En utilisant intval dans le cas de nombre entier
- En utilisant floatval dans le cas de nombre à virgule
- En utilisant mysqli_real_escape_string dans le cas d'une requête SQL (ou tout autre fonction de protection SQL)
- Lors de l'affichage utiliser htmlentities pour éviter toute attaque XSS
Exemple :
if (isset($_POST['login'], $_POST['password']))
{
$login = mysqli_real_escape_string($link, $_POST['login']);
$res = mysqli_query($link, "SELECT * FROM users WHERE login='".$login."'");
$user = mysqli_fetch_assoc($res);
/* Vérification du mdp */
echo "Bonjour ".htmlentities($user['login'])." !";
}