Auto-redirection avec ajout de paramètres en PHP
Supposons que sur la page index.php soit transmis
un paramètre GET nommé arg.
Affichons son contenu à l'écran :
<?php
echo $_GET['arg'];
?>
Supposons que notre page ne puisse pas fonctionner
correctement sans le paramètre GET.
Dans notre cas, c'est effectivement le cas, car si le paramètre
n'est pas transmis, l'accès à $_GET['arg']
entraînera une erreur.
On peut se demander pourquoi quelqu'un arriverait sur notre page sans le paramètre ? Après tout, nous pouvons mettre des liens partout sur notre site avec ce paramètre. Cependant, ce n'est pas une garantie : l'utilisateur de notre site peut, par exemple, copier un lien depuis quelque part et perdre ce faisant le paramètre. Ou simplement le supprimer accidentellement en modifiant la barre d'adresse.
En tout cas, dans tous les cas, notre code doit anticiper une telle situation et faire quelque chose. Que pouvons-nous faire ?
Nous pouvons vérifier l'existence de notre paramètre GET et l'afficher uniquement s'il existe :
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// réagir d'une certaine manière, par exemple par un message
}
?>
On peut faire plus astucieux :
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // valeur par défaut
}
echo $_GET['arg']; // affichera forcément quelque chose sans erreur
?>
Ou on peut faire en sorte que lors de l'accès à la page sans paramètre, une redirection vers cette même page avec le paramètre se produise :
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // le paramètre est garanti d'être présent
?>
Expliquez en quoi le deuxième option diffère de la troisième.
Supposons que sur la page page.php on puisse transmettre
un nombre à l'aide d'un paramètre GET nommé
num. Faites en sorte que lors de l'accès
sans ce paramètre, une redirection automatique soit effectuée
vers cette même page, mais avec le paramètre
num ayant la valeur 1.