Questão nº 50
Questão de Tecnologia da Informação · FGV TJ-SE Servidor 2023 (nº 50)
No contexto do PHP, analise a estrutura simplificada de uma página Web exibida a seguir, onde a numeração serve meramente como referência a cada uma das linhas.
1 <!DOCTYPE html>
2 <html>
3 <body>
4 <?php
5 $_SESSION["xxxxx"] = "aaaaaaa";
6 $_SESSION["yyyyy"] = "bbbbbbb";
7 ?>
8 </body>
9 </html>
Nesse contexto, considere as três linhas de códigos abaixo.
<?php session_start(); ?>A inserção em bloco dessas linhas adicionais, na página acima, deve ser feita:
- Aantes da linha 1; (alternativa correta)
- Bentre as linhas 2 e 3;
- Centre as linhas 3 e 4;
- Dentre as linhas 7 e 8;
- Edepois da linha 9.
Resposta comentada
Gabarito Alternativa A
session_start() é uma função do PHP que inicia ou retoma uma sessão (um mecanismo para armazenar dados específicos de um usuário entre diferentes páginas). Para funcionar, ela precisa ser chamada antes que qualquer conteúdo (como HTML, espaços em branco ou até mesmo a declaração <!DOCTYPE html>) seja enviado ao navegador, pois ela envia cabeçalhos HTTP (informações que o servidor manda antes do conteúdo da página).
- (A) Correta: A inserção deve ser feita antes da linha 1.
session_start()precisa ser executada antes de qualquer saída de conteúdo (HTML, espaços em branco, etc.) para que possa enviar os cabeçalhos HTTP necessários para gerenciar a sessão. Colocar antes de<!DOCTYPE html>garante que não haverá saída prévia. - (B) Incorreta: Entre as linhas 2 e 3 (depois de
<html>e antes de<body>) já é tarde demais. O<!DOCTYPE html>e a tag<html>já foram enviados como saída, o que impedesession_start()de enviar seus cabeçalhos HTTP. - (C) Incorreta: Entre as linhas 3 e 4 (depois de
<body>e antes de<?php) também é tarde demais. O<!DOCTYPE html>,<html>e<body>já foram enviados. Esta é uma armadilha comum, pois o aluno pode pensar que, por estar antes do uso de$_SESSION, estaria correto, mas o problema é a saída de HTML prévia. - (D) Incorreta: Entre as linhas 7 e 8 (depois do bloco PHP e antes de
</body>) é muito tarde. Todo o HTML inicial e o processamento PHP já ocorreram, e a sessão já deveria ter sido iniciada para que$_SESSIONpudesse ser usado. - (E) Incorreta: Depois da linha 9 (após
</html>) é definitivamente tarde demais. A página inteira já foi processada e enviada ao navegador.
Fonte: FGV TJ-SE Servidor 2023 Analista Judiciário - Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.