آموزش ساخت سیستم مدیریت اعلانها با PHP
سیستمهای مدیریت اعلان (Notification Management Systems) نقش حیاتی در تعامل با کاربران و اطلاعرسانی به موقع در وبسایتها و اپلیکیشنها ایفا میکنند. این سیستمها میتوانند برای اطلاعرسانی درباره رویدادهای مهم، بهروزرسانیها، پیامهای جدید و سایر موارد ضروری استفاده شوند. در این مقاله، به بررسی گامبهگام ساخت یک سیستم مدیریت اعلان ساده اما کاربردی با استفاده از PHP خواهیم پرداخت.
بخش اول: طراحی پایگاه داده
اولین قدم در ساخت هر سیستم، طراحی پایگاه داده است. برای سیستم مدیریت اعلان، به حداقل دو جدول نیاز داریم:
- جدول کاربران (users): این جدول اطلاعات کاربران را ذخیره میکند.
- جدول اعلانها (notifications): این جدول اطلاعات اعلانها و ارتباط آنها با کاربران را ذخیره میکند.
ساختار جدول کاربران (users):
| نام ستون | نوع داده | توضیحات |
|---|---|---|
| id | INT (AUTO_INCREMENT, PRIMARY KEY) | شناسه یکتای کاربر |
| username | VARCHAR(255) | نام کاربری |
| VARCHAR(255) | آدرس ایمیل | |
| password | VARCHAR(255) | رمز عبور (هش شده) |
| created_at | TIMESTAMP | زمان ایجاد حساب کاربری |
ساختار جدول اعلانها (notifications):
| نام ستون | نوع داده | توضیحات |
|---|---|---|
| id | INT (AUTO_INCREMENT, PRIMARY KEY) | شناسه یکتای اعلان |
| user_id | INT | شناسه کاربری که اعلان برای اوست (FOREIGN KEY referencing users.id) |
| title | VARCHAR(255) | عنوان اعلان |
| message | TEXT | محتوای اعلان |
| is_read | BOOLEAN (DEFAULT 0) | وضعیت خوانده شدن اعلان (0 = خوانده نشده، 1 = خوانده شده) |
| created_at | TIMESTAMP | زمان ایجاد اعلان |
این ساختار پایگاه داده، پایه و اساس سیستم مدیریت اعلان ما را تشکیل میدهد. با استفاده از این جداول، میتوانیم اعلانها را به کاربران مرتبط کرده و وضعیت خوانده شدن آنها را پیگیری کنیم.
بخش دوم: ایجاد توابع اصلی PHP
در این بخش، توابع اصلی PHP را برای مدیریت اعلانها ایجاد خواهیم کرد. این توابع شامل ایجاد اعلان، خواندن اعلانها، بهروزرسانی وضعیت اعلان و حذف اعلان خواهند بود.
1. تابع ایجاد اعلان (create_notification)
این تابع یک اعلان جدید را در جدول اعلانها ایجاد میکند.
function create_notification($user_id, $title, $message) {
global $conn;
$sql = "INSERT INTO notifications (user_id, title, message) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("isi", $user_id, $title, $message);
if ($stmt->execute()) {
return true;
} else {
return false;
}
}
2. تابع خواندن اعلانها (get_notifications)
این تابع اعلانهای یک کاربر خاص را از جدول اعلانها واکشی میکند.
function get_notifications($user_id) {
global $conn;
$sql = "SELECT * FROM notifications WHERE user_id = ? ORDER BY created_at DESC";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $user_id);
$stmt->execute();
$result = $stmt->get_result();
return $result->fetch_all(MYSQLI_ASSOC);
}
3. تابع بهروزرسانی وضعیت اعلان (mark_as_read)
این تابع وضعیت یک اعلان خاص را به “خوانده شده” تغییر میدهد.
function mark_as_read($notification_id) {
global $conn;
$sql = "UPDATE notifications SET is_read = 1 WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $notification_id);
if ($stmt->execute()) {
return true;
} else {
return false;
}
}
4. تابع حذف اعلان (delete_notification)
این تابع یک اعلان خاص را از جدول اعلانها حذف میکند.
function delete_notification($notification_id) {
global $conn;
$sql = "DELETE FROM notifications WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $notification_id);
if ($stmt->execute()) {
return true;
} else {
return false;
}
}
بخش سوم: پیادهسازی رابط کاربری
پس از ایجاد توابع اصلی PHP، باید یک رابط کاربری برای مدیریت اعلانها ایجاد کنیم. این رابط کاربری میتواند شامل صفحاتی برای ایجاد اعلان، نمایش اعلانها و علامتگذاری اعلانها به عنوان خوانده شده باشد.
1. صفحه نمایش اعلانها
این صفحه اعلانهای کاربر را نمایش میدهد. میتوان از یک حلقه برای واکشی اعلانها از پایگاه داده و نمایش آنها در یک لیست استفاده کرد.
<?php
// فرض کنید کاربر وارد سیستم شده است و $user_id حاوی شناسه کاربر است
$notifications = get_notifications($user_id);
if ($notifications) {
echo "<ul>";
foreach ($notifications as $notification) {
echo "<li>";
echo "<strong>" . htmlspecialchars($notification['title']) . "</strong>";
echo "<p>" . htmlspecialchars($notification['message']) . "</p>";
if ($notification['is_read'] == 0) {
echo "<a href='mark_as_read.php?id=" . $notification['id'] . "'>علامتگذاری به عنوان خوانده شده</a>";
}
echo "</li>";
}
echo "</ul>";
} else {
echo "<p>هیچ اعلانی وجود ندارد.</p>";
}
?>
2. صفحه علامتگذاری اعلان به عنوان خوانده شده
این صفحه یک اعلان خاص را به عنوان خوانده شده علامتگذاری میکند.
<?php
if (isset($_GET['id'])) {
$notification_id = $_GET['id'];
if (mark_as_read($notification_id)) {
header("Location: notifications.php"); // بازگشت به صفحه اعلانها
exit();
} else {
echo "<p>خطا در علامتگذاری اعلان به عنوان خوانده شده.</p>";
}
} else {
echo "<p>شناسه اعلان نامعتبر.</p>";
}
?>
بخش چهارم: نکات تکمیلی و بهینهسازی
برای بهبود سیستم مدیریت اعلان، میتوانید نکات زیر را در نظر بگیرید:
- پیادهسازی سیستم زمانبندی: میتوانید اعلانها را در زمانهای مشخصی ارسال کنید.
- استفاده از WebSocket: برای نمایش اعلانهای جدید به صورت real-time، میتوانید از WebSocket استفاده کنید.
- بهینهسازی پایگاه داده: با استفاده از ایندکسها و سایر تکنیکهای بهینهسازی، میتوانید سرعت واکشی اعلانها را افزایش دهید.
- امنیت: اطمینان حاصل کنید که تمام ورودیهای کاربر را اعتبارسنجی و پاکسازی میکنید تا از حملات SQL Injection و سایر آسیبپذیریهای امنیتی جلوگیری کنید.
- استفاده از کتابخانهها و فریمورکها: استفاده از فریمورکهای PHP مانند Laravel یا Symfony میتواند توسعه سیستم را سرعت بخشد و کیفیت کد را بهبود بخشد.
این مقاله، یک راهنمای جامع برای ساخت یک سیستم مدیریت اعلان ساده با استفاده از PHP ارائه میدهد. با پیادهسازی این سیستم و اعمال نکات تکمیلی، میتوانید یک سیستم اعلان کارآمد و کاربردی برای وبسایت یا اپلیکیشن خود ایجاد کنید.
