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 :

index.php<?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 :

index.php<?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 :

index.php<?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 :

index.php<?php
  if (!isset($_GET['arg'])) {
    header('Location: ?arg=default');
  }
  
  echo $_GET['arg']; // le paramètre est garanti d'être présent
?>
Задание 1

Expliquez en quoi le deuxième option diffère de la troisième.

Задание 2

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.