آموزش ساخت سیستم مدیریت اعلان‌ها

آموزش ساخت سیستم مدیریت اعلان‌ها با PHP

آموزش ساخت سیستم مدیریت اعلان‌ها با PHP

سیستم‌های مدیریت اعلان (Notification Management Systems) نقش حیاتی در تعامل با کاربران و اطلاع‌رسانی به موقع در وب‌سایت‌ها و اپلیکیشن‌ها ایفا می‌کنند. این سیستم‌ها می‌توانند برای اطلاع‌رسانی درباره رویدادهای مهم، به‌روزرسانی‌ها، پیام‌های جدید و سایر موارد ضروری استفاده شوند. در این مقاله، به بررسی گام‌به‌گام ساخت یک سیستم مدیریت اعلان ساده اما کاربردی با استفاده از PHP خواهیم پرداخت.

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

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

  • جدول کاربران (users): این جدول اطلاعات کاربران را ذخیره می‌کند.
  • جدول اعلان‌ها (notifications): این جدول اطلاعات اعلان‌ها و ارتباط آن‌ها با کاربران را ذخیره می‌کند.

ساختار جدول کاربران (users):

نام ستون نوع داده توضیحات
id INT (AUTO_INCREMENT, PRIMARY KEY) شناسه یکتای کاربر
username VARCHAR(255) نام کاربری
email 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 ارائه می‌دهد. با پیاده‌سازی این سیستم و اعمال نکات تکمیلی، می‌توانید یک سیستم اعلان کارآمد و کاربردی برای وب‌سایت یا اپلیکیشن خود ایجاد کنید.