При редиректе можно также передавать GET
параметры:
<?php
header('Location: test.php?arg=1');
?>
Пусть на странице index.php можно
передать GET параметр с именем success.
Сделайте так, чтобы при наличии такого параметра,
на страницу выводилось сообщение об успехе
операции.
Сделайте теперь страницу action.php.
Пусть при заходе на эту страницу выполняется
редирект на страницу index.php из
предыдущей задачи. При редиректе передайте
в GET параметре success значение
1.
Саморедирект с добавлением параметра
Пусть на странице 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.