Саморедирект с добавлением параметров в PHP

Пусть на странице index.php передается GET параметр с именем arg. Выведем его содержимое на экран:

<?php echo $_GET['arg']; ?>

Пусть наша страница без GET параметра не может работать корректно. В нашем случае это действительно так, так как, если параметр не передан, то обращение к $_GET['arg'] приведет к ошибке.

Может возникнуть вопрос, почему вообще человек попадет на нашу страницу без параметра? Ведь мы можем везде на нашем сайте ставить ссылки с этим параметром. Однако, это не гарантия: юзер нашего сайта может, к примеру, копировать откуда-нибудь ссылку и потерять при этом параметр. Либо просто случайно его удалить, редактируя адресную строку.

В общем, в любом случае наш код должен предполагать такую ситуацию и что-то с ней сделать. Что же можно сделать?

Можно проверять наш GET параметр на существование и выводить его, только если он существует:

<?php if (isset($_GET['arg'])) { echo $_GET['arg']; } else { // как-то реагируем, например, сообщением } ?>

Можно поступить хитрее:

<?php if (!isset($_GET['arg'])) { $_GET['arg'] = 'default'; // значение по умолчанию } echo $_GET['arg']; // гарантировано что-то выведет без ошибки ?>

А можно сделать так, чтобы при заходе на страницу без параметра происходил редирект на эту же страницу с параметром:

<?php if (!isset($_GET['arg'])) { header('Location: ?arg=default'); } echo $_GET['arg']; // параметр гарантированно есть ?>

Расскажите, в чем отличие второго варианта от третьего.

Пусть на странице page.php можно передать число с помощью GET параметра с именем num. Сделайте так, чтобы при заходе без данного параметра, автоматически выполнялся редирект на эту же страницу, но с параметром num в значении 1.



Чат с GPT Компилятор