RAJESTARY DIGITAL TECH • SECURITY • EDUCATION
دانش • فناوری • امنیت

دنیای تکنولوژی
از یادگیری شروع می‌شود

آموزش‌های کاربردی، برنامه‌نویسی، امنیت و فناوری برای ساختن، یادگرفتن و بهتر زندگی کردن با تکنولوژی.

LEARN BUILD SECURE CREATE

ساخت وبلاگ شخصی با قابلیت مدیریت محتوا

ساخت وبلاگ شخصی با قابلیت مدیریت محتوا

🏆 درس نهم: پروژه نهایی سطح متوسط؛ ساخت وبلاگ شخصی با قابلیت مدیریت محتوا

👋

سلام مهمان عزیز!

برای دسترسی به تمام محتوا و امکانات، وارد شوید.

🎯 هدف این درس: ترکیب تمام آموخته‌های دوره (PDO, Sessions, OOP, MVC, Security, File Upload) در یک پروژه واقعی و کامل. ساخت یک سیستم وبلاگ ساده که امکان ثبت‌نام، ورود، نوشتن مطلب و آپلود تصویر را داشته باشد.

مهمان عزیز! 👋
تبریک می‌گویم! تو تا اینجا راه طولانی و پرفراز و نشیبی را طی کرده‌ای. از نصب XAMPP شروع کردی و حالا به نقطه‌ای رسیده‌ای که می‌توانی یک سیستم کامل وب‌محور بسازی.

در این درس آخر، دیگر کد جدیدی یاد نمی‌گیریم؛ بلکه تمام قطعات پازل را کنار هم می‌چینیم. ما یک «وبلاگ شخصی» می‌سازیم که دارای دو بخش است:
1. بخش عمومی: نمایش لیست مطالب برای همه بازدیدکنندگان.
2. پنل مدیریت: فضایی امن برای ادمین جهت افزودن مطلب جدید همراه با تصویر.

💡 ویژگی‌های کلیدی پروژه:

  • استفاده از ساختار MVC برای نظم دهی.
  • امنیت کامل در لاگین (Hashing & Sessions).
  • آپلود امن تصاویر برای مطالب.
  • جلوگیری از حملات XSS و SQL Injection.

🗄️ مرحله ۱: طراحی دیتابیس

ما به دو جدول نیاز داریم: یکی برای کاربران (admins) و دیگری برای مطالب (posts).



🗄️
database.sql

SQL
MySQL



CREATE TABLE admins (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL
);

CREATE TABLE posts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    image VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

// ایجاد یک ادمین تستی (رمز عبور: 123456)
INSERT INTO admins (username, password) 
VALUES ('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi');

🧠 مرحله ۲: مدل‌ها (Models)

کلاس‌هایی می‌سازیم که مسئولیت ارتباط با دیتابیس را بر عهده دارند.



🧠
models/Post.php

PHP
8.x



<?php
class Post {
    private $pdo;

    public function __construct($pdo) {
        $this->pdo = $pdo;
    }

    public function getAll() {
        $stmt = $this->pdo->query("SELECT * FROM posts ORDER BY id DESC");
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

    public function create($title, $content, $image) {
        $stmt = $this->pdo->prepare("INSERT INTO posts (title, content, image) VALUES (?, ?, ?)");
        return $stmt->execute([$title, $content, $image]);
    }
}

🎮 مرحله ۳: کنترلر (Controller)

منطق اصلی برنامه اینجا قرار دارد. بررسی لاگین، دریافت داده‌های فرم و هدایت کاربر.



🎮
controllers/AdminController.php

PHP
8.x



<?php
class AdminController {
    private $postModel;

    public function __construct($pdo) {
        $this->postModel = new Post($pdo);
    }

    public function storePost() {
        // بررسی امنیت و لاگین بودن
        if (!isset($_SESSION['admin_id'])) die("دسترسی غیرمجاز");

        $title = htmlspecialchars($_POST['title']);
        $content = $_POST['content'];
        
        // مدیریت آپلود فایل (طبق درس ۳)
        $imageName = $_FILES['image']['name'];
        move_uploaded_file($_FILES['image']['tmp_name'], "uploads/" . $imageName);

        $this->postModel->create($title, $content, $imageName);
        header("Location: index.php");
    }
}

🎨 مرحله ۴: نما (View)

نمایش لیست مطالب در صفحه اصلی.



🎨
views/home.php

PHP/HTML
Mixed



<h1>آخرین مطالب وبلاگ</h1>
<div class="posts-grid">
    <?php foreach ($posts as $post): ?>
        <article>
            <img src"uploads/<?= $post['image'] ?>" alt"<?= $post['title'] ?>">
            <h2><?= htmlspecialchars($post['title']) ?></h2>
            <p><?= substr($post['content'], 0, 100) ?>...</p>
        </article>
    <?php endforeach; ?>
</div>

🏁 جمع‌بندی نهایی دوره

مهمان عزیز، تو اکنون یک توسعه‌دهنده PHP مقدماتی نیستی؛ تو کسی هستی که می‌داند چگونه یک سیستم امن، ساختاریافته و پویا بسازد.

  • ✅ تسلط بر دیتابیس و PDO.
  • ✅ درک عمیق از Sessions و امنیت کاربر.
  • ✅ توانایی کار با فایل‌ها و APIها.
  • ✅ آشنایی با معماری MVC و شی‌گرایی.

🎓 قدم بعدی چیست؟

پیشنهاد می‌کنیم برای حرفه‌ای‌تر شدن، سراغ یادگیری یک فریم‌ورک مدرن مثل Laravel بروید یا دوره‌های پیشرفته‌تر رجستری را دنبال کنید.


🚀 مشاهده سایر دوره‌ها


🗺️ نقشه راه دوره: پایان مسیر

تو با موفقیت تمام دروس این دوره را پشت سر گذاشتی. امیدواریم این دانش پایه‌ای محکم برای آینده شغلی تو باشد.

درس عنوان درس وضعیت
۱ تا ۸ دروس قبلی… ✅ تکمیل شده
۹ پروژه نهایی سطح متوسط 🏆 در حال انجام

🔗 لینک‌های مرتبط

👤
نویسنده یونس رجستری
📅
تاریخ انتشار 28 مرداد 1405
🔄
آخرین بروزرسانی 28 مرداد 1405
ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

⚠️

هشدار مهم!

برای اتصال به درگاه پرداخت و انجام تراکنش، لطفاً VPN یا فیلترشکن خود را خاموش کنید.

⏳ ادامه در
5
ثانیه