Atender PHP do Zero - Parte 7

Agora que você já criou um painel completo, vamos aprender a enviar imagens para o servidor, validar e exibir em uma galeria.

📘 Aprender PHP do Zero — Parte 7: Upload de Imagens com PHP

Agora que você já criou um painel completo, vamos aprender a enviar imagens para o servidor, validar e exibir em uma galeria.

Você aprenderá:

  • Criar formulário com envio de arquivos
  • Validar extensão e tamanho
  • Salvar com nomes únicos
  • Exibir imagens cadastradas na galeria
  • Testar tudo diretamente no seu Android

🧱 1. Banco de Dados e Pasta uploads/

Crie a tabela para armazenar os nomes das imagens:

CREATE TABLE galeria (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome_arquivo VARCHAR(200),
  titulo VARCHAR(100)
);

E crie uma pasta chamada uploads/ no mesmo diretório dos arquivos PHP. Essa pasta deve ter permissão de escrita.


📤 2. Formulário de Upload (upload.html)

<form method="POST" action="upload.php" enctype="multipart/form-data">
  Título: <input name="titulo"><br>
  Imagem: <input type="file" name="imagem"><br>
  <input type="submit" value="Enviar">
</form>

<a href="galeria.php">Ver Galeria</a>

Importante: O atributo enctype="multipart/form-data" é necessário para uploads.


🔐 3. Código de Upload com Validação (upload.php)

<?php
require "conexao.php";

$titulo = $_POST["titulo"];
$arquivo = $_FILES["imagem"];

$nome = $arquivo["name"];
$tmp = $arquivo["tmp_name"];
$tipo = $arquivo["type"];
$tamanho = $arquivo["size"];

// Extensões permitidas
$permitidas = ["image/jpeg", "image/png", "image/jpg"];
$maximo = 2 * 1024 * 1024; // 2 MB

if (!in_array($tipo, $permitidas)) {
  die("Tipo de imagem inválido.");
}

if ($tamanho > $maximo) {
  die("Imagem muito grande (limite 2MB).");
}

// Gerar nome único
$novo_nome = uniqid() . "-" . basename($nome);
$caminho = "uploads/" . $novo_nome;

if (move_uploaded_file($tmp, $caminho)) {
  $stmt = $conn->prepare("INSERT INTO galeria (nome_arquivo, titulo) VALUES (?, ?)");
  $stmt->bind_param("ss", $novo_nome, $titulo);
  $stmt->execute();

  echo "Imagem enviada com sucesso! <br>";
  echo "<a href='galeria.php'>Ver galeria</a>";
} else {
  echo "Erro ao enviar imagem.";
}
?>

🖼️ 4. Exibindo as Imagens (galeria.php)

<?php
require "conexao.php";
$res = $conn->query("SELECT * FROM galeria ORDER BY id DESC");

while ($img = $res->fetch_assoc()) {
  echo "<h3>" . htmlspecialchars($img["titulo"]) . "</h3>";
  echo "<img src='uploads/" . $img["nome_arquivo"] . "' width='300'><hr>";
}
?>

Use htmlspecialchars() para evitar problemas com títulos HTML.


🧪 5. Testar no Android

Use Acode ou Termux com PHP e MariaDB instalados. Siga os passos:

  1. Crie a pasta uploads/
  2. Dê permissão:
    chmod 777 uploads
  3. Rode o servidor:
    php -S localhost:8000
  4. Acesse http://localhost:8000/upload.html

Envie uma imagem e clique em Ver galeria. Ela será exibida automaticamente!


✅ Conclusão da Parte 7

Você aprendeu a:

  • Fazer upload de arquivos com PHP
  • Validar tipo de imagem e tamanho
  • Salvar com nome único
  • Gravar o nome da imagem no banco
  • Exibir tudo em uma galeria funcional

Próxima etapa:

👉 Parte 8: Vamos aprender a:

  • Fazer login com imagem de perfil
  • Exibir imagem na sessão do usuário
  • Substituir imagem antiga ao atualizar

Parabéns por avançar até aqui! Agora você tem um sistema PHP completo com imagens, login, banco de dados e segurança.

Enviar um comentário