← Questões de Programação

Programação · FGV · 2023

Questão comentada de Programação

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 é:

Gabarito: A

Em PHP, toda vez que voce trabalha com variaveis de sessao, o roteiro tem um passo obrigatorio: iniciar a sessao com session_start() antes de tentar ler $_SESSION. Sem isso, a superglobal pode nao estar disponivel corretamente e a checagem de usuario falha, como se voce tentasse abrir a porta antes de colocar a chave na fechadura. No codigo da questao, a ideia de testar se existe um usuario logado com isset($_SESSION["user"]) faz sentido. O problema nao esta no teste em si, mas no fato de que a sessao nao foi iniciada. Em outras palavras, a pagina quer consultar a sessao, mas esqueceu de avisar ao PHP que aquela conversa de sessao com o navegador precisa ser retomada. Por isso, o gabarito A esta correto: sem session_start(), o PHP nao gerencia nem recupera os dados da sessao atual. Em termos praticos, o uso de $_SESSION depende da inicializacao da sessao, e isso e regra basica de PHP, muito cobrada em prova. As demais alternativas tentam distrair com detalhes de HTML ou de captura de dados, mas o erro central e de controle de sessao. Em pagina protegida, o fluxo normal e: session_start() no inicio, depois verificar se existe o indice esperado em $_SESSION, e entao exibir ou nao o conteudo.

Continue treinando

Questões relacionadas