Autoredirección con adición de parámetros en PHP
Supongamos que en la página index.php se pasa
un parámetro GET con el nombre arg.
Mostremos su contenido en pantalla:
<?php
echo $_GET['arg'];
?>
Supongamos que nuestra página no puede funcionar correctamente
sin el parámetro GET.
En nuestro caso
esto es cierto, ya que, si el parámetro
no se pasa, el acceso a $_GET['arg']
provocará un error.
Puede surgir la pregunta, ¿por qué alguien accedería a nuestra página sin el parámetro? Después de todo, podemos poner enlaces en todo nuestro sitio con este parámetro. Sin embargo, esto no es una garantía: el usuario de nuestro sitio podría, por ejemplo, copiar un enlace desde algún lugar y perder en el proceso el parámetro. O simplemente eliminarlo accidentalmente al editar la barra de direcciones.
En general, en cualquier caso, nuestro código debe prever esta situación y hacer algo al respecto. ¿Qué se puede hacer?
Podemos verificar la existencia de nuestro parámetro GET y mostrarlo solo si existe:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// reaccionamos de alguna manera, por ejemplo, con un mensaje
}
?>
Podemos actuar de manera más astuta:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // valor por defecto
}
echo $_GET['arg']; // garantizado que mostrará algo sin error
?>
O podemos hacer que al acceder a la página sin parámetro ocurra una redirección a la misma página con el parámetro:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // el parámetro está garantizado
?>
Explica en qué se diferencia la segunda variante de la tercera.
Supongamos que en la página page.php se puede pasar
un número mediante un parámetro GET con el nombre
num. Haz que al acceder
sin este parámetro, se ejecute automáticamente
una redirección a esta misma página, pero con el parámetro
num con el valor 1.