Em uma aplicação PHP há uma página chamada mensagens.php com...
Em uma aplicação PHP há uma página chamada mensagens.php com o seguinte conteúdo:
<?php
echo $_GET['mensagem'];
?>
Em outra página há uma variável $mensagem declarada da seguinte forma:
$mensagem = 'Este departamento não está cadastrado';
Deseja-se que o conteúdo dessa variável seja passado para a página mensagens.php via GET de forma que o texto da
mensagem possa ser recebido nessa página e exibido na tela. Para isso, nessa página, após a declaração da variável
$mensagem deve ser incluída a instrução
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a C - header ("location: mensagens.php?mensagem=" . $mensagem);
Vamos entender o porquê desta resposta ser a correta. No PHP, quando queremos redirecionar o usuário de uma página para outra e, ao mesmo tempo, passar alguns dados via GET, utilizamos a função header()
junto com o location. Esta função é responsável por enviar cabeçalhos HTTP brutos ao navegador. No caso do redirecionamento, o cabeçalho 'Location' é utilizado para indicar ao navegador que ele deve ir para uma nova URL.
Para passar a variável $mensagem
via GET, a URL no cabeçalho 'Location' precisa ser construída com a própria variável como parte da query string. A query string é a parte da URL que vem após o '?' e geralmente contém pares de chave-valor. Neste caso, o par é 'mensagem'
e o valor da variável $mensagem
. A concatenação em PHP é feita com o operador ponto ('.').
Portanto, a linha de código correta para a ação desejada é:
<?php
header("location: mensagens.php?mensagem=" . urlencode($mensagem));
?>
Perceba que incluí a função urlencode()
para garantir que qualquer caractere especial na mensagem seja codificado de forma adequada para uso em URLs. Isso é uma boa prática para evitar possíveis problemas com caracteres que têm significados especiais em URLs.
As outras alternativas não são corretas porque:
- A, B e D utilizam funções inexistentes ou nomes de funções incorrectos; elas parecem ser uma confusão com a função real
header()
. - E utiliza uma estrutura de cabeçalho incorreta, misturando 'send' com 'location', o que não constitui um cabeçalho válido para redirecionamento no PHP.
Em resumo, a alternativa C é a única que utiliza a função correta e a sintaxe adequada para realizar o redirecionamento de uma página PHP para outra, passando dados via método GET.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
c. header ("location: mensagens.php?mensagem=" . $mensagem);
header () é usado para enviar um cabeçalho HTTP bruto. Veja a especificação »HTTP / 1.1 para mais informações sobre cabeçalhos HTTP.
Lembre-se de que header () deve ser chamado antes de qualquer saída real ser enviada, seja por tags HTML normais, linhas em branco em um arquivo ou pelo PHP. É um erro muito comum ler código com funções include ou require, ou outra função de acesso a arquivos, e ter espaços ou linhas vazias que são emitidas antes de header () ser chamado. O mesmo problema existe ao usar um único arquivo PHP / HTML.
< html>
< ?php
/* This will give an error. Note the output
* above, which is before the header() call */
header ( 'Location: http://www.example.com/' );
exit;
? >
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo