Arquiteturas na Programação Web – e uma introdução ao PHP

Agora, vamos programar

Este exemplo demonstra uma arquitetura simples em PHP para armazenar o nome de uma pessoa em uma página e exibi-lo em outra. Não representa uma arquitetura robusta para aplicações web complexas, mas serve como um ponto de partida para entender o fluxo básico de dados entre páginas.

Página 1: index.php (Formulário para coletar o nome)

<!DOCTYPE html>
<html>
<head>
  <title>Digite seu nome</title>
</head>
<body>

  <h1>Digite seu nome:</h1>

  <form action="exibir_nome.php" method="post">
    <label for="nome">Nome:</label>
    <input type="text" id="nome" name="nome" required><br><br>

    <input type="submit" value="Enviar">
  </form>

</body>
</html>

Página 2: exibir_nome.php (Exibe o nome digitado)

<!DOCTYPE html>
<html>
<head>
  <title>Seu nome</title>
</head>
<body>

  <h1>Olá, 
  <?php
    if (isset($_POST['nome'])) {
      $nome = htmlspecialchars($_POST['nome']); // Proteção contra XSS
      echo $nome; 
    } else {
      echo "visitante!"; // Mensagem padrão caso o nome não seja fornecido
    }
  ?>
  !</h1>

</body>
</html>

Explicação:

  1. index.php:
  • Cria um formulário HTML simples com um campo de texto para o nome (<input type="text" id="nome" name="nome">).
  • O atributo method="post" especifica que os dados do formulário serão enviados via POST.
  • O atributo action="exibir_nome.php" define que os dados serão enviados para o arquivo exibir_nome.php.
  1. exibir_nome.php:
  • Usa $_POST['nome'] para acessar o valor do campo “nome” enviado pelo formulário. É crucial usar htmlspecialchars() para prevenir ataques Cross-Site Scripting (XSS), que podem ocorrer se um usuário mal-intencionado inserir código malicioso no campo de texto.
  • Se o nome for fornecido, ele será exibido na tela. Caso contrário, uma mensagem padrão (“visitante!”) será exibida.

Melhorias e Considerações Adicionais

Embora o exemplo acima funcione para um cenário básico, há algumas melhorias e considerações que podem ser aplicadas para tornar o código mais robusto e seguro:

  1. Validação de Dados:
    • Além de usar htmlspecialchars(), é importante validar os dados de entrada para garantir que eles atendam aos critérios esperados (por exemplo, verificar se o nome contém apenas caracteres válidos).
  2. Redirecionamento Seguro:
    • Se o formulário for submetido sem um nome, você pode redirecionar o usuário de volta ao formulário com uma mensagem de erro.
  3. Uso de Sessões:
    • Para cenários mais complexos, onde você precisa manter o estado do usuário entre várias páginas, o uso de sessões PHP ($_SESSION) é recomendado.
  4. Proteção contra ataques CSRF:
    • Para evitar ataques CSRF (Cross-Site Request Forgery), você pode adicionar tokens ao formulário (para casos beeeem avançados).

Exemplo com Melhorias

Aqui está uma versão aprimorada do código, incluindo validação de dados e redirecionamento seguro:

Página 1: index.php (Formulário para coletar o nome)

<!DOCTYPE html>
<html>
<head>
  <title>Digite seu nome</title>
</head>
<body>

  <h1>Digite seu nome:</h1>

  <form action="exibir_nome.php" method="post">
    <label for="nome">Nome:</label>
    <input type="text" id="nome" name="nome" required><br><br>

    <input type="submit" value="Enviar">
  </form>

</body>
</html>

Página 1 com Mensagem de Erro: index.php

<?php
// Inicia a sessão
session_start();

// Verifica se o formulário foi submetido
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Valida o nome
    if (isset($_POST['nome']) && !empty($_POST['nome'])) {
        $nome = htmlspecialchars($_POST['nome']); // Proteção contra XSS
    } else {
        // Redireciona de volta ao formulário com uma mensagem de erro
        $_SESSION['erro'] = "Por favor, insira um nome válido.";
        header('Location: index.php');
        exit();
    }
} else {
    // Redireciona de volta ao formulário se o método não for POST
    header('Location: index.php');
    exit();
}
?>

<!DOCTYPE html>
<html>
<head>
  <title>Seu nome</title>
</head>
<body>

  <h1>Olá, <?php echo $nome; ?>!</h1>

</body>
</html>

Página 2: exibir_nome.php (Exibe o nome digitado)

<!DOCTYPE html>
<html>
<head>
  <title>Seu nome</title>
</head>
<body>

  <h1>Olá, 
  <?php
    if (isset($_POST['nome'])) {
      $nome = htmlspecialchars($_POST['nome']); // Proteção contra XSS
      echo $nome; 
    } else {
      echo "visitante!"; // Mensagem padrão caso o nome não seja fornecido
    }
  ?>
  !</h1>

</body>
</html>

Explicação das Melhorias:

  1. Validação de Dados:
    • O código agora verifica se o nome foi fornecido e não está vazio antes de processá-lo.
  2. Redirecionamento Seguro:
    • Se o nome não for fornecido, o usuário é redirecionado de volta ao formulário com uma mensagem de erro.
  3. Uso de Sessões:
    • A mensagem de erro é armazenada em uma sessão para que possa ser exibida após o redirecionamento.

Páginas: 1 2 3

·

últimas aulas

confira mais [ -> ]

Descubra mais sobre Apprendendo

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continuar lendo

Descubra mais sobre Apprendendo

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continuar lendo