Analista Judiciário - Especialidade - Análise de Sistemas
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.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;
Bentre as linhas 2 e 3;
Centre as linhas 3 e 4;
Dentre as linhas 7 e 8;
Edepois da linha 9.
Revelar gabarito e comentário▾
GabaritoA — antes da linha 1;
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: posicionamento de session_start() em página HTML
Gabarito: letra A. A chamada session_start() deve ser feita antes de qualquer saída de conteúdo para o navegador — ou seja, antes da linha 1, que inicia o documento HTML. Isso porque a função envia cabeçalhos HTTP (como o cookie de sessão) e, se já houver saída de HTML, o PHP emite um aviso e a sessão pode não ser iniciada corretamente.
A função session_start() é responsável por iniciar ou retomar uma sessão no PHP. Sessões são um mecanismo para armazenar dados do usuário entre requisições HTTP, que são stateless (sem estado). Quando chamada, o PHP verifica se existe um cookie de sessão (por padrão chamado PHPSESSID) e, se não houver, cria um novo ID de sessão e envia o cookie ao navegador. Esse cookie é um cabeçalho HTTP, e cabeçalhos só podem ser enviados antes de qualquer conteúdo do corpo da resposta (HTML, espaços em branco, etc.).
Na prática, se você inserir session_start() depois de já ter enviado HTML (por exemplo, após a tag <!DOCTYPE html> ou qualquer texto), o PHP tentará enviar o cabeçalho, mas como a saída já começou, ocorrerá um erro como "headers already sent". O aviso não impede a execução, mas a sessão pode não funcionar como esperado, e o cookie pode não ser definido. Por isso, a boa prática — e o que a banca cobra — é colocar session_start() no topo absoluto do arquivo, antes de qualquer outra coisa, inclusive antes da declaração do DOCTYPE.
Vamos entender a estrutura da página: a linha 1 provavelmente contém <!DOCTYPE html> ou <html>, que são as primeiras saídas de conteúdo. Qualquer texto ou tag HTML enviada ao navegador conta como saída. Portanto, para garantir que a sessão funcione, o bloco de código PHP com session_start() deve ser inserido antes da linha 1, ou seja, no início absoluto do arquivo, antes de qualquer tag HTML.
A pegadinha aqui é que muitos candidatos pensam que basta colocar o código PHP em qualquer lugar antes do </head> ou antes do corpo, mas a regra é mais estrita: deve ser antes de qualquer saída, incluindo espaços em branco ou BOM (Byte Order Mark) que possam ser enviados antes do <?php. Por isso, a alternativa correta é a letra A.
Alternativa A — ✅ Correta ⟵ GABARITO
A inserção deve ser feita antes da linha 1, pois session_start() precisa ser chamada antes de qualquer saída de conteúdo para o navegador. Como a linha 1 inicia o documento HTML (provavelmente com <!DOCTYPE html> ou <html>), qualquer código PHP que envie cabeçalhos deve vir antes dela. Isso garante que o cookie de sessão seja enviado corretamente e que a sessão seja iniciada sem erros.
Alternativa B — ❌ Incorreta
Inserir entre as linhas 2 e 3 já seria tarde demais, pois a linha 1 (e possivelmente a linha 2) já teria enviado conteúdo HTML ao navegador. Nesse ponto, o PHP não conseguiria mais enviar o cabeçalho do cookie, resultando no aviso "headers already sent" e na falha potencial da sessão.
Alternativa C — ❌ Incorreta
Entre as linhas 3 e 4, o mesmo problema se aplica: já houve saída de HTML. A sessão não seria iniciada corretamente, e o cookie não seria definido. A posição correta é sempre antes de qualquer saída, não importa se é no meio do <head> ou do <body>.
Alternativa D — ❌ Incorreta
Entre as linhas 7 e 8, o conteúdo HTML já foi amplamente enviado. A chamada a session_start() aqui seria ineficaz e geraria o erro de cabeçalhos já enviados. A única posição válida é antes de qualquer saída, ou seja, antes da linha 1.
Alternativa E — ❌ Incorreta
Depois da linha 9, o documento HTML já está praticamente completo. Inserir session_start() aqui não teria efeito algum, pois os cabeçalhos já foram enviados. A sessão não seria iniciada, e o cookie não seria definido.
NÃO CAIA NESSA!
A banca tenta confundir o candidato ao sugerir posições intermediárias no documento, como entre as linhas 2 e 3 ou entre 7 e 8. Muitos pensam que basta colocar o código antes do </head> ou antes do corpo, mas a regra é mais estrita: deve ser antes de qualquer saída, incluindo espaços em branco ou BOM. A única posição correta é antes da linha 1, no topo absoluto do arquivo.
PEGA ESSA DICA!
Para questões de posicionamento de session_start(), lembre-se: sempre antes de qualquer saída de conteúdo. Se a página tem <!DOCTYPE html> na linha 1, o código PHP deve vir antes dela. Uma boa prática é colocar o bloco <?php session_start(); ?> no início do arquivo, antes de qualquer tag HTML.