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:
- 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 arquivoexibir_nome.php.
- exibir_nome.php:
- Usa
$_POST['nome']para acessar o valor do campo “nome” enviado pelo formulário. É crucial usarhtmlspecialchars()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:
- 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).
- Além de usar
- 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.
- 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.
- 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 (
- 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:
- Validação de Dados:
- O código agora verifica se o nome foi fornecido e não está vazio antes de processá-lo.
- Redirecionamento Seguro:
- Se o nome não for fornecido, o usuário é redirecionado de volta ao formulário com uma mensagem de erro.
- Uso de Sessões:
- A mensagem de erro é armazenada em uma sessão para que possa ser exibida após o redirecionamento.



