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