Самарэдырэкцыя з дабаўленнем параметраў у 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.