При редиректе можно также передавать 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
.