Auto-redirecționare cu adăugarea de parametri în PHP
Să presupunem că pe pagina index.php este transmis
un parametru GET cu numele arg.
Să-i afișăm conținutul pe ecran:
<?php
echo $_GET['arg'];
?>
Să presupunem că pagina noastră nu poate funcționa corect
fără parametrul GET.
În cazul nostru, acest lucru este într-adevăr adevărat, deoarece,
dacă parametrul nu este transmis, atunci accesarea lui $_GET['arg']
va duce la o eroare.
Poate apărea întrebarea, de ce ar ajunge o persoană pe pagina noastră fără parametru? Până la urmă, noi putem pune peste tot pe site-ul nostru linkuri cu acest parametru. Cu toate acestea, aceasta nu este o garanție: utilizatorul site-ului nostru poate, de exemplu, să copieze linkul de undeva și să-l piardă pe acesta parametrul. Sau pur și simplu să-l șteargă accidental, editând bara de adrese.
În general, în orice caz, codul nostru ar trebui să anticipeze o astfel de situație și să facă ceva în legătură cu ea. Ce putem face?
Putem verifica dacă parametrul nostru GET există și să-l afișăm doar dacă acesta există:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// reacționăm cumva, de exemplu, cu un mesaj
}
?>
Putem proceda mai inteligent:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // valoare implicită
}
echo $_GET['arg']; // garantează că va afișa ceva fără eroare
?>
Sau putem face astfel încât, la accesarea paginii fără parametru, să se producă o redirecționare către aceeași pagină cu parametrul:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // parametrul este garantat prezent
?>
Explicați care este diferența dintre a doua variantă și a treia.
Să presupunem că pe pagina page.php se poate transmite
un număr cu ajutorul parametrului GET cu numele
num. Faceți astfel încât, la accesarea
fără acest parametru, să se execute automat
o redirecționare către aceeași pagină, dar cu parametrul
num cu valoarea 1.