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