# Саморедирект с добавлением параметров в 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`.

←→
↑