Samoprzekierowanie z dodawaniem parametrów w PHP
Załóżmy, że na stronie index.php przekazywany jest
parametr GET o nazwie arg.
Wyświetlmy jego zawartość na ekranie:
<?php
echo $_GET['arg'];
?>
Załóżmy, że nasza strona bez parametru GET
nie może działać poprawnie. W naszym przypadku
faktycznie tak jest, ponieważ jeśli parametr
nie został przekazany, to odwołanie do $_GET['arg']
spowoduje błąd.
Może pojawić się pytanie, dlaczego w ogóle użytkownik trafi na naszą stronę bez parametru? Przecież możemy wszędzie na naszej stronie internetowej umieszczać linki z tym parametrem. Jednak to nie jest gwarancja: użytkownik naszej strony może, na przykład, skopiować gdzieś link i przy tym stracić parametr. Albo po prostu przypadkowo go usunąć, edytując pasek adresu.
W każdym razie, nasz kod powinien zakładać taką sytuację i coś z nią zrobić. Co można zrobić?
Można sprawdzać istnienie naszego parametru GET i wyświetlać go tylko wtedy, gdy istnieje:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// w jakiś sposób reagujemy, na przykład komunikatem
}
?>
Można postąpić sprytniej:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // wartość domyślna
}
echo $_GET['arg']; // gwarantowanie coś wyświetli bez błędu
?>
A można zrobić tak, aby przy wejściu na stronę bez parametru następowało przekierowanie na tę samą stronę z parametrem:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // parametr jest gwarantowany
?>
Opowiedz, na czym polega różnica między drugim wariantem a trzecim.
Załóżmy, że na stronie page.php można przekazać
liczbę za pomocą parametru GET o nazwie
num. Zrób tak, aby przy wejściu
bez tego parametru, automatycznie wykonywało się
przekierowanie na tę samą stronę, ale z parametrem
num o wartości 1.