Principais erros de desenvolvedores PHP iniciantes — parte 4: Trabalhando com dados

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Principais erros de desenvolvedores PHP iniciantes — parte 4: Trabalhando com dados



Continuamos a série de artigos para aqueles que estão estudando PHP e desejam escrever código de maior qualidade. Nesta parte, abordaremos três erros críticos relacionados ao processamento de dados do usuário, cache e tipagem estrita. Se você está na fase de aprendizado de PHP, estes exemplos ajudarão a evitar problemas típicos em projetos reais.



1. Confiar em dados de arrays superglobais



Um dos erros mais comuns para desenvolvedores PHP iniciantes é usar dados de $_GET, $_POST ou $_REQUEST sem validação e filtragem. Este é um caminho direto para ataques XSS e injeções SQL.



Abordagem incorreta

<?php// Perigoso! O usuário pode enviar um script$name = $_POST['username'];echo "Olá, $name!";?>


Abordagem correta

<?php// Usamos filtragem e escape$name = htmlspecialchars(strip_tags(trim($_POST['username'] ?? '')), ENT_QUOTES, 'UTF-8');echo "Olá, " . $name . "!";?>


O que fazer? Sempre processe os dados de entrada. Para trabalhar com banco de dados, use prepared statements (PDO ou MySQLi), e para saída, use htmlspecialchars(). Esta é a base da segurança em programação em PHP.



2. Ausência de cache para consultas pesadas



Muitos iniciantes executam a mesma consulta SQL ou cálculo complexo a cada atualização de página. Isso prejudica o desempenho, especialmente quando há muitas consultas.



Exemplo do problema

<?php// Consultamos dados do banco a cada vez$users = $db->query("SELECT * FROM users WHERE active = 1")->fetchAll();foreach ($users as $user) {    echo $user['name'];}?>


Solução com cache

<?php// Usamos cache simples em arquivo$cacheFile = 'cache/users_active.cache';$cacheTime = 300; // 5 minutos

if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < $cacheTime) { $users = unserialize(file_get_contents($cacheFile));} else { $users = $db->query("SELECT * FROM users WHERE active = 1")->fetchAll(); file_put_contents($cacheFile, serialize($users));}

foreach ($users as $user) { echo $user['name'];}?>


Para projetos mais complexos, use Memcached ou Redis. Isso acelerará o aprendizado de PHP em termos de compreensão da arquitetura de aplicações de alta carga.



3. Ignorar a tipagem estrita



PHP é uma linguagem com tipagem dinâmica, mas desde a versão 7.0 é possível ativar o modo estrito. Iniciantes frequentemente esquecem disso, o que leva a erros inesperados.



Situação típica

<?phpfunction calculateSum($a, $b) {    return $a + $b;}

echo calculateSum(10, '5'); // Resultado: 15 (string foi convertida para número)?>


Correção

<?phpdeclare(strict_types=1); // Ativamos o modo estrito

function calculateSum(int $a, int $b): int { return $a + $b;}

// echo calculateSum(10, '5'); // Fatal error: Uncaught TypeErrorecho calculateSum(10, 5); // 15?>


A tipagem estrita ajuda a detectar erros na fase de desenvolvimento, não em produção. Recomendamos a todos PHP para iniciantes que se acostumem desde já a especificar tipos de argumentos e valores de retorno.



Bônus: trabalhar com sessões sem verificação



Outro erro frequente é gravar na sessão sem verificar a existência da chave. Isso pode gerar avisos.



<?phpsession_start();

// Erro: se a chave não existir, receberemos um aviso$_SESSION['counter'] = $_SESSION['counter'] + 1;

// Correto$_SESSION['counter'] = ($_SESSION['counter'] ?? 0) + 1;?>

Blogs

Book Recommendations