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