$_GET

$_GET — Variables HTTP GET

Description

Un tableau associatif des valeurs passées au script courant via les paramètres d'URL.
L'intérêt de paramètres passés dans l'URL est que vous pouvez copier coller l'URL et la partager, le contenu devrait être identique.
Se retrouveront dans la variable $_GET toutes les informations contenues dans la chaine de requete.
Par exemple, dans l'url actuelle, la chaine de requête est en gras (à partir du ?) :
http://belzorash.com/Formation/_other_lessons/php-intro/courses/01-PHP/02-Les%20variables%20Superglobales/03-$_GET.php
! Vous devez modifier l'url ou valider le formulaire en dessous pour avoir des paramètres car il n'y en a pas par défaut.

/!\ ATTENTION /!\

Les paramètres sont donc visibles par toutes personnes lisant l'URL, n'envoyez jamais de données sensibles en GET !


Exemple :
var_dump($_GET);
Donne actuellement sur ce serveur :
array(0) {
}
Pour tester, vous pouvez validez ce formulaire (d'exemple) de recherche :

Exemple de formulaire de recherche



Code du formulaire :
<form method="GET" action="">
	<h3>Exemple de formulaire de recherche</h3>
	<label>Rechercher : <input type="text" name="recherche" placeholder="Recherche..."></label>
	<br/>
	<label>Page : <input type="number" name="pagination" placeholder="Page" min="1" max="10"></label>
	<br/>
	<input type="submit" value="Rechercher">
</form>

Bonus & Sécurité

Lorsque vous récupérez des données via la variable $_GET, vous vous devez de respecter ces règles :
  1. Vérifier si le contenu que vous attendez existe avec isset
  2. 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)
  3. Lors de l'affichage utiliser htmlentities pour éviter toute attaque XSS
Exemple :
if (isset($_GET['recherche'], $_GET['pagination']))
{
	$recherche = mysqli_real_escape_string($link, $_GET['recherche']);
	$pagination = intval($_GET['pagination']);
	$res = mysqli_query($link, "SELECT * FROM articles WHERE title LIKE '%".$recherche."%' LIMIT 10 OFFSET ".($pagination * 10));
	/*while ...*/
	echo "La recherche ".htmlentities($recherche)." n'a pas retourné de résultat";
}