كود PHP و MySQL لإنشاء منتدى بسيط: دليل عملي للمبتدئين

كود PHP و MySQL لإنشاء منتدى بسيط: دليل عملي للمبتدئين

Profil
Icons
ريان شكلي
كاتب محتوى في معلومات
منذ: 2024-06-05
آخر تحديث: 2024-07-30

محتويات


كود PHP و MySQL لإنشاء منتدى بسيط: دليل عملي للمبتدئين

إنشاء منتدى بسيط باستخدام PHP و MySQL يمكن أن يكون مشروعًا تعليميًا رائعًا. دعنا نبدأ بدليل عملي خطوة بخطوة لإنشاء منتدى بسيط.

المتطلبات الأساسية لإنشاء منتدى بسيط

خادم ويب: مثل Apache

إعداد قاعدة البيانات

سنبدأ بإنشاء قاعدة البيانات والجداول اللازمة.

إنشاء قاعدة البيانات

CREATE DATABASE forum;
USE forum;

إنشاء الجداول

-- جدول المستخدمين
CREATE TABLE users (
   id INT AUTO_INCREMENT PRIMARY KEY,
   username VARCHAR(50) NOT NULL,
   password VARCHAR(255) NOT NULL,
   created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- جدول الفئات
CREATE TABLE categories (
   id INT AUTO_INCREMENT PRIMARY KEY,
   name VARCHAR(100) NOT NULL,
   description TEXT,
   created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- جدول المواضيع
CREATE TABLE topics (
   id INT AUTO_INCREMENT PRIMARY KEY,
   user_id INT,
   category_id INT,
   title VARCHAR(100) NOT NULL,
   body TEXT,
   created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
   FOREIGN KEY (user_id) REFERENCES users(id),
   FOREIGN KEY (category_id) REFERENCES categories(id)
);

-- جدول الردود
CREATE TABLE replies (
   id INT AUTO_INCREMENT PRIMARY KEY,
   topic_id INT,
   user_id INT,
   body TEXT,
   created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
   FOREIGN KEY (topic_id) REFERENCES topics(id),
   FOREIGN KEY (user_id) REFERENCES users(id)
);

إنشاء صفحات PHP

ملف الاتصال بقاعدة البيانات db.php

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "forum";

// إنشاء الاتصال
$conn = new mysqli($servername, $username, $password, $dbname);

// التحقق من الاتصال
if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
}
?>

صفحة التسجيل register.php

<?php
include 'db.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $username = $_POST['username'];
   $password = password_hash($_POST['password'], PASSWORD_DEFAULT);

   $sql = "INSERT INTO users (username, password) VALUES ('$username', '$password')";

   if ($conn->query($sql) === TRUE) {
       echo "New record created successfully";
   } else {
       echo "Error: " . $sql . "<br>" . $conn->error;
   }
}
?>

<!DOCTYPE html>
<html>
<head>
   <title>Register</title>
</head>
<body>
   <form method="POST" action="register.php">
       Username: <input type="text" name="username"><br>
       Password: <input type="password" name="password"><br>
       <input type="submit" value="Register">
   </form>
</body>
</html>

صفحة تسجيل الدخول login.php

<?php
include 'db.php';
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $username = $_POST['username'];
   $password = $_POST['password'];

   $sql = "SELECT * FROM users WHERE username = '$username'";
   $result = $conn->query($sql);

   if ($result->num_rows > 0) {
       $row = $result->fetch_assoc();
       if (password_verify($password, $row['password'])) {
           $_SESSION['user_id'] = $row['id'];
           header("Location: index.php");
       } else {
           echo "Invalid password.";
       }
   } else {
       echo "No user found.";
   }
}
?>

<!DOCTYPE html>
<html>
<head>
   <title>Login</title>
</head>
<body>
   <form method="POST" action="login.php">
       Username: <input type="text" name="username"><br>
       Password: <input type="password" name="password"><br>
       <input type="submit" value="Login">
   </form>
</body>
</html>

صفحة الفئة category.php

<?php
include 'db.php';
session_start();

if (!isset($_SESSION['user_id'])) {
   header("Location: login.php");
   exit();
}

$category_id = $_GET['id'];
$sql = "SELECT * FROM topics WHERE category_id = $category_id";
$topics = $conn->query($sql);
?>

<!DOCTYPE html>
<html>
<head>
   <title>Category</title>
</head>
<body>
   <h1>Topics in Category</h1>
   <ul>
       <?php while($topic = $topics->fetch_assoc()): ?>
           <li><a href="topic.php?id=<?= $topic['id'] ?>"><?= $topic['title'] ?></a></li>
       <?php endwhile; ?>
   </ul>
   <a href="new_topic.php?category_id=<?= $category_id ?>">Create New Topic</a>
</body>
</html>

صفحة الموضوع topic.php

<?php
include 'db.php';
session_start();

if (!isset($_SESSION['user_id'])) {
   header("Location: login.php");
   exit();
}

$topic_id = $_GET['id'];
$sql = "SELECT * FROM topics WHERE id = $topic_id";
$topic = $conn->query($sql)->fetch_assoc();

$sql = "SELECT * FROM replies WHERE topic_id = $topic_id";
$replies = $conn->query($sql);
?>

<!DOCTYPE html>
<html>
<head>
   <title>Topic</title>
</head>
<body>
   <h1><?= $topic['title'] ?></h1>
   <p><?= $topic['body'] ?></p>
   <h2>Replies</h2>
   <ul>
       <?php while($reply = $replies->fetch_assoc()): ?>
           <li><?= $reply['body'] ?></li>
       <?php endwhile; ?>
   </ul>
   <form method="POST" action="reply.php">
       <input type="hidden" name="topic_id" value="<?= $topic_id ?>">
       <textarea name="body"></textarea><br>
       <input type="submit" value="Reply">
   </form>
</body>
</html>

صفحة إنشاء موضوع جديد new_topic.php

<?php
include 'db.php';
session_start();

if (!isset($_SESSION['user_id'])) {
   header("Location: login.php");
   exit();
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $user_id = $_SESSION['user_id'];
   $category_id = $_POST['category_id'];
   $title = $_POST['title'];
   $body = $_POST['body'];

   $sql = "INSERT INTO topics (user_id, category_id, title, body) VALUES ('$user_id', '$category_id', '$title', '$body')";

   if ($conn->query($sql) === TRUE) {
       header("Location: category.php?id=$category_id");
   } else {
       echo "Error: " . $sql . "<br>" . $conn->error;
   }
}
?>

<!DOCTYPE html>
<html>
<head>
   <title>New Topic</title>
</head>
<body>
   <form method="POST" action="new_topic.php">
       <input type="hidden" name="category_id" value="<?= $_GET['category_id'] ?>">
       Title: <input type="text" name="title"><br>
       Body: <textarea name="body"></textarea><br>
       <input type="submit" value="Create">
   </form>
</body>
</html>

صفحة الرد على موضوع reply.php

<?php
include 'db.php';
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $user_id = $_SESSION['user_id'];
   $topic_id = $_POST['topic_id'];
   $body = $_POST['body'];

   $sql = "INSERT INTO replies (topic_id, user_id, body) VALUES ('$topic_id', '$user_id', '$body')";

   if ($conn->query($sql) === TRUE) {
       header("Location: topic.php?id=$topic_id");
   } else {
       echo "Error: " . $sql . "<br>" . $conn->error;
   }
}
?>

هذا الدليل يغطي الأساسيات لإنشاء منتدى بسيط باستخدام PHP و MySQL. يمكنك تحسين وتوسيع هذا المنتدى بإضافة ميزات أخرى مثل إدارة المستخدمين، وتنسيق النصوص، والإشعارات، وغيرها.

الوسوم

شارك المقالة


إقرأ أيضا


مقالات منوعة

صلاة الوتر

كيفيّة أداء صلاة الوتر

الكرة الطائرة

الكرة الطائرة

فهم الفرق بين التداول الآلي واليدوي

الفرق بين المدير والقائد

الفرق بين المدير والقائد

أفضل الطرق في علاج جفاف البشرة الدهني

علاج جفاف البشرة الدهني

ما هي قوانين كرة السلة

ما هي قوانين كرة السلة

فهم الـ NFTs

حكم قراءة الأبراج بين متعة التسلية وضرورة التفكير العقلاني

حكم قراءة الأبراج

 كيفية تنمية المهارات الإدارية؟

تأسيس شركة ناجحة

كيفية تقصير بنطلون الجينز

كيفية تقصير بنطلون الجينز

شكرًا لكم على زيارتكم لمعلومات، ونتطلع لرؤية تقدمكم ونجاحكم في رحلة التعلم.