0

Sistema de Comentarios Básico en PHP Puro con Código Explicado

Comparte

Contenido:

En este ejemplo práctico aprenderás cómo implementar un sistema de comentarios básico en PHP y MySQL, ideal para integrarlo en blogs, artículos o cualquier sección donde tus usuarios puedan dejar opiniones.


🧩 Estructura del Proyecto

  • index.php (formulario y muestra de comentarios)
  • guardar_comentario.php (procesa y guarda comentarios)
  • Base de datos: tabla comentarios

🗃️ 1. Estructura de Base de Datos

CREATE TABLE comentarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL,
  comentario TEXT NOT NULL,
  fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

📝 2. index.php

<?php
$conn = new mysqli("localhost", "root", "", "tu_base_de_datos");
$comentarios = $conn->query("SELECT * FROM comentarios ORDER BY fecha DESC");
?>
<form action="guardar_comentario.php" method="POST">
  <input type="text" name="nombre" placeholder="Tu nombre" required><br>
  <textarea name="comentario" placeholder="Escribe tu comentario" required></textarea><br>
  <input type="submit" value="Enviar">
</form>

<h3>Comentarios:</h3>
<?php while ($row = $comentarios->fetch_assoc()): ?>
  <div>
    <strong><?= htmlspecialchars($row['nombre']) ?></strong> - <em><?= $row['fecha'] ?></em>
    <p><?= nl2br(htmlspecialchars($row['comentario'])) ?></p>
    <hr>
  </div>
<?php endwhile; ?>

💾 3. guardar_comentario.php

<?php
$conn = new mysqli("localhost", "root", "", "tu_base_de_datos");

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nombre = $conn->real_escape_string($_POST['nombre']);
    $comentario = $conn->real_escape_string($_POST['comentario']);

    $conn->query("INSERT INTO comentarios (nombre, comentario) VALUES ('$nombre', '$comentario')");
    header("Location: index.php");
}
?>

Puntos importantes

  • Usa htmlspecialchars para prevenir XSS.
  • Puedes paginar los comentarios si hay muchos.
  • Para producciones reales, usa sentencias preparadas (PDO o mysqli prepared).





codigo fuente gratis

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *