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

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

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

در این مقاله، به بررسی و آموزش گام به گام ساخت یک سیستم مدیریت لایک‌ها با استفاده از زبان برنامه‌نویسی PHP خواهیم پرداخت. این سیستم به کاربران اجازه می‌دهد تا محتواهای مختلف را لایک کنند و تعداد لایک‌ها را نمایش دهند. این آموزش برای توسعه‌دهندگان وب که قصد دارند قابلیت لایک را به وب‌سایت یا اپلیکیشن خود اضافه کنند، بسیار مفید خواهد بود.

پیش‌نیازها

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

  • یک سرور وب با PHP نصب شده (مانند Apache یا Nginx)
  • یک پایگاه داده (مانند MySQL یا MariaDB)
  • دانش پایه PHP و SQL
  • یک ویرایشگر کد (مانند VS Code، Sublime Text یا PHPStorm)

طراحی پایگاه داده

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

CREATE TABLE likes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    content_id INT NOT NULL,
    user_id INT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

توضیحات:

  • id: شناسه یکتای لایک
  • content_id: شناسه محتوایی که لایک شده است (مانند پست، مقاله، ویدیو و غیره)
  • user_id: شناسه کاربری که لایک کرده است
  • created_at: زمان ایجاد لایک

اتصال به پایگاه داده

ابتدا باید به پایگاه داده متصل شویم. فایل db_config.php را ایجاد کنید و اطلاعات اتصال به پایگاه داده را در آن قرار دهید:

connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
?>

به جای مقادیر پیش‌فرض، اطلاعات اتصال به پایگاه داده خود را وارد کنید.

تابع لایک کردن

تابع زیر را برای لایک کردن یک محتوا ایجاد کنید. این تابع بررسی می‌کند که آیا کاربر قبلاً این محتوا را لایک کرده است یا خیر. اگر لایک نکرده باشد، یک لایک جدید ایجاد می‌کند.

prepare($sql);
    $stmt->bind_param("ii", $content_id, $user_id);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($result->num_rows == 0) {
        $sql = "INSERT INTO likes (content_id, user_id) VALUES (?, ?)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("ii", $content_id, $user_id);
        if ($stmt->execute()) {
            return true;
        } else {
            return false;
        }
    } else {
        return false; // کاربر قبلاً لایک کرده است
    }
}
?>

تابع لغو لایک کردن

تابع زیر را برای لغو لایک کردن یک محتوا ایجاد کنید. این تابع لایکی را که کاربر قبلاً برای این محتوا ثبت کرده است، حذف می‌کند.

prepare($sql);
    $stmt->bind_param("ii", $content_id, $user_id);
    if ($stmt->execute()) {
        return true;
    } else {
        return false;
    }
}
?>

تابع شمارش لایک‌ها

تابع زیر را برای شمارش تعداد لایک‌های یک محتوا ایجاد کنید.

prepare($sql);
    $stmt->bind_param("i", $content_id);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();
    return $row['like_count'];
}
?>

بررسی وضعیت لایک کاربر

تابع زیر را برای بررسی اینکه آیا کاربر یک محتوا را لایک کرده است یا خیر، ایجاد کنید.

prepare($sql);
    $stmt->bind_param("ii", $content_id, $user_id);
    $stmt->execute();
    $result = $stmt->get_result();
    return $result->num_rows > 0;
}
?>

نمایش لایک‌ها و دکمه لایک/لغو لایک

حالا می‌توانیم تعداد لایک‌ها را نمایش دهیم و دکمه لایک/لغو لایک را ایجاد کنیم. فرض کنید شناسه محتوا در متغیر $content_id و شناسه کاربر در متغیر $user_id ذخیره شده است.

<?php
include 'db_config.php';

$content_id = 1; // شناسه محتوا
$user_id = 1; // شناسه کاربر

$like_count = count_likes($content_id, $conn);

if (is_liked($content_id, $user_id, $conn)) {
    echo '';
    echo '';
    echo '';
    echo '';
} else {
    echo '';
    echo '';
    echo '';
    echo '';
}

echo '

تعداد لایک‌ها: ' . $like_count . '

'; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (isset($_POST['like'])) { if (like_content($content_id, $user_id, $conn)) { echo 'location.reload();'; // رفرش صفحه } else { echo "خطا در لایک کردن."; } } elseif (isset($_POST['unlike'])) { if (unlike_content($content_id, $user_id, $conn)) { echo 'location.reload();'; // رفرش صفحه } else { echo "خطا در لغو لایک کردن."; } } } $conn->close(); ?>

بهبود امنیت

برای افزایش امنیت سیستم، می‌توانید اقدامات زیر را انجام دهید:

  • اعتبارسنجی ورودی‌ها: قبل از استفاده از مقادیر $content_id و $user_id در کوئری‌های SQL، آن‌ها را اعتبارسنجی کنید تا از حملات SQL Injection جلوگیری شود.
  • استفاده از Prepared Statements: همانطور که در مثال‌های بالا نشان داده شد، از Prepared Statements برای جلوگیری از SQL Injection استفاده کنید.
  • مدیریت Session: برای شناسایی کاربران، از Session استفاده کنید و از حملات Session Hijacking جلوگیری کنید.
  • محدود کردن تعداد لایک‌ها: می‌توانید تعداد لایک‌هایی که یک کاربر می‌تواند در یک بازه زمانی مشخص انجام دهد را محدود کنید تا از اسپم جلوگیری شود.

نتیجه‌گیری

در این مقاله، یک سیستم مدیریت لایک‌ها با استفاده از PHP و MySQL ایجاد کردیم. این سیستم به کاربران اجازه می‌دهد تا محتواها را لایک کنند، لایک‌های خود را لغو کنند و تعداد لایک‌ها را مشاهده کنند. با رعایت نکات امنیتی، می‌توانید این سیستم را به یک بخش قابل اعتماد و کاربردی از وب‌سایت یا اپلیکیشن خود تبدیل کنید.