Самопреусмеравање са додавањем параметара у 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.