Em uma aplicação PHP há uma página chamada mensagens.php com...

Próximas questões
Com base no mesmo assunto
Q642674 Programação

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

Alternativas

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