Redirecionamento automático com adição de parâmetros em PHP
Suponha que na página index.php seja passado
um parâmetro GET com o nome arg.
Vamos exibir seu conteúdo na tela:
<?php
echo $_GET['arg'];
?>
Suponha que nossa página não possa funcionar corretamente
sem o parâmetro GET.
No nosso caso, isso é verdade, pois, se o parâmetro
não for passado, o acesso a $_GET['arg']
resultará em um erro.
Pode surgir a pergunta: por que alguém acessaria nossa página sem o parâmetro? Afinal, podemos colocar links em todo o nosso site com esse parâmetro. No entanto, isso não é uma garantia: o usuário do nosso site pode, por exemplo, copiar um link de algum lugar e perder o parâmetro no processo. Ou simplesmente apagá-lo acidentalmente ao editar a barra de endereços.
De qualquer forma, nosso código deve prever essa situação e fazer algo sobre ela. O que pode ser feito?
Podemos verificar se nosso parâmetro GET existe e exibi-lo apenas se ele existir:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// reagimos de alguma forma, por exemplo, com uma mensagem
}
?>
Podemos agir de forma mais esperta:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // valor padrão
}
echo $_GET['arg']; // garantidamente exibirá algo sem erro
?>
Ou podemos fazer com que, ao acessar a página sem o parâmetro, ocorra um redirecionamento para a mesma página com o parâmetro:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // o parâmetro está garantidamente presente
?>
Explique qual é a diferença entre a segunda opção e a terceira.
Suponha que na página page.php seja possível passar
um número usando um parâmetro GET com o nome
num. Faça com que, ao acessar
sem este parâmetro, um redirecionamento automático seja executado
para esta mesma página, mas com o parâmetro
num com o valor 1.