Pular para o conteúdo principal

Questão de Programação — PHP — FGV 2023

ProgramaçãoPHP
Código
fg073209
Banca
FGV
Órgão
TJ-SE
Ano
2023
Nível
Médio
Cargo
Técnico Judiciário - Especialidade - Programação de Sistemas
Roberta está efetuando a manutenção de um sistema em PHP, onde, após um backup de emergência, a verificação de usuário em uma página protegida deixou de funcionar. O código da página é apresentado a seguir.<html><body> <?php if (isset($_SESSION["user"])) { ?> Esse conteúdo deveria ser exibido <?php } ?> </body></html> Após analisar o código, Roberta descobriu que o problema é:
  1. Aa ausência de um comando session_start no início da página;
  2. Bo uso de isset para verificar se há um usuário logado;
  3. Ca forma de captura de valor, que deveria ser com $_POST;
  4. Da abertura e o fechamento da estrutura condicional em dois blocos distintos;
  5. Ea falta de um atributo DOCTYPE para o html.
Revelar gabarito e comentário

GabaritoA — a ausência de um comando session_start no início da página;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

PHP — Sessão e variável $_SESSION

Gabarito: letra A. O erro no código é a ausência do comando session_start() no início da página. Sem ele, a superglobal $_SESSION não é inicializada, e a verificação isset($_SESSION["user"]) sempre retornará false, impedindo a exibição do conteúdo protegido.

O PHP gerencia sessões através de cookies ou parâmetros de URL, mas é obrigatório chamar session_start() antes de qualquer acesso a $_SESSION. No código fornecido, a página tenta acessar $_SESSION sem essa chamada, o que torna a sessão indisponível.

Alternativa A — ✅ Correta ⟵ GABARITO

A função session_start() é necessária para iniciar ou retomar uma sessão. Sem ela, $_SESSION não existe como array, e isset retorna false. A correção é adicionar <?php session_start(); ?> antes de qualquer saída HTML.

Alternativa B — ❌ Incorreta

O uso de isset é correto para verificar se uma variável está definida e não é null. O problema não está na função de verificação.

Alternativa C — ❌ Incorreta

$_POST captura dados enviados via formulário com método POST, não serve para armazenar dados de sessão persistentes entre páginas. A forma correta para login é $_SESSION.

Alternativa D — ❌ Incorreta

O PHP permite abertura e fechamento de blocos <?php ... ?> no meio do HTML. A estrutura condicional com dois blocos separados (um para abrir a chave, outro para fechar) é perfeitamente válida.

Alternativa E — ❌ Incorreta

A declaração <!DOCTYPE html> é opcional para o funcionamento do PHP e não tem relação com a sessão. Sua falta não causa o problema descrito.

Gabarito: letra A.

Link permanente: /questoes/fg073209