آموزش ساخت سیستم مدیریت ویدیوها

آموزش ساخت سیستم مدیریت ویدیوها با PHP

آموزش ساخت سیستم مدیریت ویدیوها با PHP

در این مقاله، به بررسی گام به گام ساخت یک سیستم مدیریت ویدیوها (Video Management System – VMS) با استفاده از زبان برنامه‌نویسی PHP خواهیم پرداخت. این سیستم به شما امکان می‌دهد ویدیوها را آپلود، مدیریت، دسته‌بندی و نمایش دهید. هدف این آموزش، ارائه یک راهنمای عملی و کاربردی برای توسعه‌دهندگان است تا بتوانند یک VMS پایه را پیاده‌سازی کنند و در صورت نیاز آن را گسترش دهند.

بخش اول: پیش‌نیازها و آماده‌سازی

قبل از شروع، اطمینان حاصل کنید که پیش‌نیازهای زیر را دارید:

  • PHP: نسخه 7.4 یا بالاتر
  • MySQL: یک پایگاه داده MySQL برای ذخیره اطلاعات ویدیوها
  • Web Server: یک وب سرور مانند Apache یا Nginx
  • HTML, CSS, JavaScript: دانش پایه این زبان‌ها برای طراحی رابط کاربری

همچنین، یک محیط توسعه محلی (مانند XAMPP، WAMP یا MAMP) راه‌اندازی کنید تا بتوانید کدها را تست و اجرا کنید.

بخش دوم: طراحی پایگاه داده

برای ذخیره اطلاعات ویدیوها، به یک پایگاه داده نیاز داریم. یک جدول به نام videos با ساختار زیر ایجاد کنید:

CREATE TABLE videos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    description TEXT,
    filename VARCHAR(255) NOT NULL,
    upload_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    category VARCHAR(255),
    views INT DEFAULT 0
);

توضیحات فیلدها:

  • id: شناسه یکتای ویدیو
  • title: عنوان ویدیو
  • description: توضیحات ویدیو
  • filename: نام فایل ویدیو در سرور
  • upload_date: تاریخ آپلود ویدیو
  • category: دسته‌بندی ویدیو
  • views: تعداد بازدید ویدیو

بخش سوم: پیاده‌سازی آپلود ویدیو

برای آپلود ویدیوها، از یک فرم HTML استفاده می‌کنیم. این فرم باید فایل ویدیو را به یک اسکریپت PHP ارسال کند.

فرم HTML (upload.php):

<form action="upload.php" method="post" enctype="multipart/form-data">
    <label for="title">عنوان ویدیو:</label>
    <input type="text" id="title" name="title" required><br>

    <label for="description">توضیحات ویدیو:</label>
    <textarea id="description" name="description"></textarea><br>

    <label for="file">انتخاب فایل ویدیو:</label>
    <input type="file" id="file" name="file" accept="video/*" required><br>

    <label for="category">دسته‌بندی:</label>
    <input type="text" id="category" name="category"><br>

    <input type="submit" value="آپلود ویدیو">
</form>

اسکریپت PHP (upload.php):

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$uploadOk = 1;
$fileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["file"]["size"] > 5000000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// Allow certain file formats
if($fileType != "mp4" && $fileType != "avi" && $fileType != "mov") {
  echo "Sorry, only MP4, AVI & MOV files are allowed.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload the file
} else {
  if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars(basename($_FILES["file"]["name"])). " has been uploaded.";

    // Save video information to database
    $title = $_POST["title"];
    $description = $_POST["description"];
    $filename = basename($_FILES["file"]["name"]);
    $category = $_POST["category"];

    $conn = new mysqli("localhost", "username", "password", "database");
    if ($conn->connect_error) {
      die("Connection failed: " . $conn->connect_error);
    }

    $sql = "INSERT INTO videos (title, description, filename, category) VALUES ('$title', '$description', '$filename', '$category')";

    if ($conn->query($sql) === TRUE) {
      echo "New record created successfully";
    } else {
      echo "Error: " . $sql . "
" . $conn->error; } $conn->close(); } else { echo "Sorry, there was an error uploading your file."; } } ?>

نکات مهم:

  • $target_dir: دایرکتوری‌ای که ویدیوها در آن ذخیره می‌شوند.
  • enctype="multipart/form-data": این ویژگی برای فرم‌هایی که فایل آپلود می‌کنند ضروری است.
  • accept="video/*": این ویژگی مشخص می‌کند که فقط فایل‌های ویدئویی قابل انتخاب باشند.
  • کد PHP، فایل آپلود شده را بررسی می‌کند تا از نظر نوع فایل، حجم و وجود فایل مشابه، مطمئن شود.
  • اطلاعات ویدیو (عنوان، توضیحات، نام فایل و دسته‌بندی) در پایگاه داده ذخیره می‌شوند.
  • به جای “username”, “password” و “database” مقادیر مناسب را وارد کنید.

بخش چهارم: نمایش ویدیوها

برای نمایش ویدیوها، باید اطلاعات آن‌ها را از پایگاه داده دریافت کرده و در یک صفحه HTML نمایش دهیم.

اسکریپت PHP (index.php):

<?php
$conn = new mysqli("localhost", "username", "password", "database");
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT id, title, filename, upload_date, views FROM videos";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // output data of each row
  while($row = $result->fetch_assoc()) {
    echo "<div>";
    echo "<h2>" . $row["title"] . "</h2>";
    echo "<p>تاریخ آپلود: " . $row["upload_date"] . "</p>";
    echo "<video width="320" height="240" controls>";
    echo "<source src="uploads/" . $row["filename"] . "" type="video/mp4">";
    echo "Your browser does not support the video tag.";
    echo "</video>";
    echo "<p>بازدیدها: " . $row["views"] . "</p>";
    echo "</div>";
  }
} else {
  echo "No videos found";
}
$conn->close();
?>

این اسکریپت، اطلاعات ویدیوها را از جدول videos دریافت کرده و آن‌ها را در قالب HTML نمایش می‌دهد. تگ <video> برای نمایش ویدیو استفاده می‌شود.

بخش پنجم: بهبود و گسترش سیستم

سیستم مدیریت ویدیوهای ساخته شده، یک VMS پایه است. برای بهبود و گسترش آن، می‌توانید موارد زیر را در نظر بگیرید:

  • طراحی رابط کاربری: استفاده از CSS و JavaScript برای ایجاد یک رابط کاربری جذاب و کاربرپسند.
  • جستجو و فیلتر: امکان جستجو و فیلتر ویدیوها بر اساس عنوان، دسته‌بندی و تاریخ آپلود.
  • مدیریت دسته‌بندی‌ها: ایجاد، ویرایش و حذف دسته‌بندی‌ها.
  • کامنت‌گذاری: امکان افزودن کامنت به ویدیوها.
  • سیستم امتیازدهی: امکان امتیازدهی به ویدیوها.
  • امنیت: پیاده‌سازی اقدامات امنیتی برای جلوگیری از دسترسی غیرمجاز و حملات احتمالی.
  • بهینه‌سازی: بهینه‌سازی کدها و پایگاه داده برای افزایش سرعت و کارایی سیستم.

این آموزش، یک نقطه شروع برای ساخت یک سیستم مدیریت ویدیوها با PHP است. با استفاده از دانش و خلاقیت خود، می‌توانید این سیستم را به یک ابزار قدرتمند و کاربردی تبدیل کنید.