Fácil PHP

Recebendo nome via GET

Enunciado

Crie um script PHP que leia o parâmetro nome da URL via $_GET e exiba uma saudação. Se o parâmetro não for informado, mostre "Olá, visitante!".

Requisitos

  • Usar $_GET para obter o parâmetro nome.
  • Exibir "Olá, [nome]!" quando o parâmetro existir.
  • Exibir "Olá, visitante!" quando o parâmetro não existir.
  • Usar htmlspecialchars() para evitar XSS.

Código inicial

<?php
// Seu código aqui

Saída esperada

Olá, Maria!
Ver dica

Use isset($_GET['nome']) para verificar se o parâmetro existe. Não esqueça de escapar a saída com htmlspecialchars().

Mostrar solução
<?php
// Lê o parâmetro 'nome' da URL, se existir
$nome = $_GET['nome'] ?? 'visitante';

// Escapa caracteres especiais para evitar XSS
echo 'Olá, ' . htmlspecialchars($nome) . '!';

Passo a passo

  1. $_GET['nome'] ?? 'visitante' usa o operador de coalescência nula: se $_GET['nome'] não existir ou for null, assume 'visitante'.
  2. A variável $nome recebe o valor bruto da URL.
  3. htmlspecialchars($nome) converte caracteres como <, >, & em entidades HTML, impedindo que o navegador interprete tags.
  4. O echo monta a string final concatenando as partes.

Por que funciona

O PHP popula automaticamente a superglobal $_GET com os parâmetros da query string. Ao usar htmlspecialchars, qualquer tentativa de injetar HTML ou JavaScript é neutralizada, pois os caracteres são exibidos como texto.

Erros comuns

  • Não verificar se o parâmetro existe: echo $_GET['nome']; gera um aviso Undefined array key "nome" se a URL não tiver o parâmetro. Use ?? ou isset().
  • Esquecer o htmlspecialchars: se alguém acessar ?nome=<script>alert(1)</script>, o script seria executado no navegador. Sempre escape ao exibir dados do usuário.
  • Usar htmlspecialchars na entrada: ele deve ser usado na saída, não ao armazenar. Armazene o dado bruto e escape na hora de exibir.

Outra forma de resolver

Usar filter_input(INPUT_GET, 'nome', FILTER_SANITIZE_SPECIAL_CHARS):

$nome = filter_input(INPUT_GET, 'nome', FILTER_SANITIZE_SPECIAL_CHARS) ?? 'visitante';
echo 'Olá, ' . $nome . '!';

Essa forma já sanitiza na entrada, mas ainda é recomendável escapar na saída.

Saída esperada

Olá, Maria!