آموزش ساخت سیستم امتیازدهی با PHP
سیستمهای امتیازدهی یکی از اجزای مهم در بسیاری از وبسایتها و برنامههای کاربردی هستند. این سیستمها به کاربران اجازه میدهند تا به محتوا، محصولات، یا سایر کاربران امتیاز دهند و بازخورد خود را ارائه دهند. این مقاله به شما نحوه ساخت یک سیستم امتیازدهی ساده اما کاربردی با استفاده از PHP و MySQL را آموزش میدهد. این سیستم شامل ذخیره امتیازات در پایگاه داده، نمایش میانگین امتیازات و جلوگیری از امتیازدهی تکراری توسط یک کاربر خواهد بود.
پیشنیازها
برای دنبال کردن این آموزش، شما به موارد زیر نیاز دارید:
- یک سرور وب با PHP نصب شده (مانند Apache یا Nginx)
- یک پایگاه داده MySQL
- دانش پایه PHP و SQL
- یک ویرایشگر متن یا IDE
طراحی پایگاه داده
ابتدا باید یک جدول در پایگاه داده MySQL برای ذخیره امتیازات ایجاد کنیم. جدول ما شامل ستونهای زیر خواهد بود:
id: شناسه یکتا برای هر امتیاز (کلید اصلی، خودافزودن)item_id: شناسه محتوا یا محصولی که به آن امتیاز داده شده است.user_id: شناسه کاربری که امتیاز را داده است.rating: امتیاز داده شده (مثلاً از 1 تا 5)created_at: زمان ایجاد امتیاز
کد SQL برای ایجاد جدول:
CREATE TABLE ratings (
id INT AUTO_INCREMENT PRIMARY KEY,
item_id INT NOT NULL,
user_id INT NOT NULL,
rating INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
اتصال به پایگاه داده
در PHP، ابتدا باید به پایگاه داده MySQL متصل شوید. کد زیر یک مثال ساده از نحوه اتصال به پایگاه داده است:
connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
به جای username، password و database_name مقادیر مناسب را وارد کنید.
دریافت و ذخیره امتیاز
حالا باید کدی بنویسیم که امتیاز ارسالی از طرف کاربر را دریافت کرده و در پایگاه داده ذخیره کند. این کد باید بررسی کند که آیا کاربر قبلاً به این آیتم امتیاز داده است یا خیر. اگر کاربر قبلاً امتیاز داده باشد، امتیاز قبلی را بهروزرسانی میکنیم. در غیر این صورت، یک امتیاز جدید ایجاد میکنیم.
query($sql);
if ($result->num_rows > 0) {
// بهروزرسانی امتیاز قبلی
$row = $result->fetch_assoc();
$rating_id = $row["id"];
$update_sql = "UPDATE ratings SET rating = '$rating' WHERE id = '$rating_id'";
if ($conn->query($update_sql) === TRUE) {
echo "امتیاز بهروزرسانی شد.";
} else {
echo "Error updating rating: " . $conn->error;
}
} else {
// ایجاد امتیاز جدید
$insert_sql = "INSERT INTO ratings (item_id, user_id, rating) VALUES ('$item_id', '$user_id', '$rating')";
if ($conn->query($insert_sql) === TRUE) {
echo "امتیاز ثبت شد.";
} else {
echo "Error inserting rating: " . $conn->error;
}
}
}
?>
این کد فرض میکند که شما یک فرم HTML با فیلدهای item_id، user_id و rating دارید.
نمایش میانگین امتیازات
برای نمایش میانگین امتیازات یک آیتم، باید یک کوئری SQL بنویسیم که میانگین امتیازات را محاسبه کند. کد زیر یک مثال از نحوه محاسبه میانگین امتیازات است:
query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$average_rating = $row["average_rating"];
echo "میانگین امتیازات: " . $average_rating;
} else {
echo "امتیازی برای این آیتم وجود ندارد.";
}
?>
این کد فرض میکند که شما یک پارامتر item_id در URL دارید.
فرم HTML برای امتیازدهی
در اینجا یک مثال از فرم HTML برای امتیازدهی آورده شده است:
<form method="post" action="submit_rating.php">
<input type="hidden" name="item_id" value="123">
<input type="hidden" name="user_id" value="456">
<p>امتیاز خود را انتخاب کنید:</p>
<input type="radio" id="rating_1" name="rating" value="1"><label for="rating_1">1 ستاره</label><br>
<input type="radio" id="rating_2" name="rating" value="2"><label for="rating_2">2 ستاره</label><br>
<input type="radio" id="rating_3" name="rating" value="3"><label for="rating_3">3 ستاره</label><br>
<input type="radio" id="rating_4" name="rating" value="4"><label for="rating_4">4 ستاره</label><br>
<input type="radio" id="rating_5" name="rating" value="5"><label for="rating_5">5 ستاره</label><br>
<button type="submit">ثبت امتیاز</button>
</form>
به جای 123 و 456 مقادیر مناسب را وارد کنید. همچنین، فایل submit_rating.php باید شامل کد PHP برای دریافت و ذخیره امتیاز باشد.
بهبود امنیت
برای بهبود امنیت سیستم امتیازدهی، میتوانید از اقدامات زیر استفاده کنید:
- اعتبارسنجی ورودیها: قبل از ذخیره اطلاعات در پایگاه داده، ورودیها را اعتبارسنجی کنید تا از حملات SQL Injection جلوگیری کنید.
- استفاده از Prepared Statements: از Prepared Statements برای جلوگیری از SQL Injection استفاده کنید.
- محدود کردن تعداد امتیازدهی: میتوانید تعداد امتیازدهی توسط هر کاربر را محدود کنید.
- استفاده از CAPTCHA: برای جلوگیری از امتیازدهی خودکار توسط رباتها، از CAPTCHA استفاده کنید.
نتیجهگیری
در این مقاله، شما نحوه ساخت یک سیستم امتیازدهی ساده اما کاربردی با استفاده از PHP و MySQL را یاد گرفتید. این سیستم شامل ذخیره امتیازات در پایگاه داده، نمایش میانگین امتیازات و جلوگیری از امتیازدهی تکراری توسط یک کاربر بود. با استفاده از این آموزش، میتوانید یک سیستم امتیازدهی را برای وبسایت یا برنامه کاربردی خود ایجاد کنید و بازخورد کاربران را جمعآوری کنید.
