آموزش ساخت سیستم مدیریت ویدیوها با 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 است. با استفاده از دانش و خلاقیت خود، میتوانید این سیستم را به یک ابزار قدرتمند و کاربردی تبدیل کنید.
