ශිෂ්ය සහ ගුරු උපකරණ පුවරු සහිත සම්පූර්ණ e-learning වෙබ් අඩවියක් පියවරෙන් පියවර නිර්මාණය කරමු.
මෙම නිබන්ධනය මගින්, ඔබ ලබාදුන් වීඩියෝවේ ඇති ආකාරයේ e-learning platform එකක් නිර්මාණය කරන්නේ කෙසේදැයි පියවරෙන් පියවර කියාදෙනු ලැබේ. මෙහිදී අපි PHP (server-side scripting), MySQL (database), සහ Bootstrap (front-end framework) භාවිතා කරමු.
පළමුව, අපගේ ව්යාපෘතිය සඳහා පහත පරිදි ෆෝල්ඩර සහ ගොනු ව්යුහයක් සකසා ගනිමු. මෙය කේතය සංවිධානාත්මකව තබා ගැනීමට උපකාරී වේ.
/e-learning-platform/
|-- config/
| `-- db_connect.php
|-- student/
| |-- index.php
| |-- lessons.php
| `-- profile.php
|-- teacher/
| |-- index.php
| |-- manage_lessons.php
| `-- create_lesson.php
|-- assets/
| `-- css/
| `-- style.css
|-- login.php
|-- register.php
|-- logout.php
`-- index.php
phpMyAdmin හෝ වෙනත් MySQL client එකක් භාවිතයෙන් elearning_db නමින් දත්ත සමුදායක් සාදන්න. ඉන්පසු පහත SQL කේතය ක්රියාත්මක කර අවශ්ය වගු (tables) සාදාගන්න.
-- පරිශීලකයන් (users) සඳහා වගුව
CREATE TABLE `users` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`full_name` VARCHAR(100) NOT NULL,
`email` VARCHAR(100) NOT NULL UNIQUE,
`password` VARCHAR(255) NOT NULL,
`user_type` ENUM('student', 'teacher') NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- පාඩම් (lessons) සඳහා වගුව
CREATE TABLE `lessons` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`teacher_id` INT NOT NULL,
`title` VARCHAR(255) NOT NULL,
`content` TEXT NOT NULL,
FOREIGN KEY (`teacher_id`) REFERENCES `users`(`id`)
);
-- ශිෂ්ය ප්රගතිය (student_progress) සඳහා වගුව
CREATE TABLE `student_progress` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`student_id` INT NOT NULL,
`lesson_id` INT NOT NULL,
`status` ENUM('completed', 'in_progress') DEFAULT 'in_progress',
FOREIGN KEY (`student_id`) REFERENCES `users`(`id`),
FOREIGN KEY (`lesson_id`) REFERENCES `lessons`(`id`)
);
ව්යාපෘතියේ හරය වන දත්ත සමුදා සම්බන්ධතාවය සකසමු.
config/db_connect.phpමෙම ගොනුව අපගේ වෙබ් අඩවිය සහ MySQL දත්ත සමුදාය අතර සම්බන්ධතාවය ගොඩනගයි. සිංහල භාෂාව සඳහා utf8 character set එක භාවිතා කිරීම අනිවාර්ය වේ.
<?php
session_start();
$host = 'localhost';
$username = 'root'; // ඔබගේ username
$password = ''; // ඔබගේ password
$dbname = 'elearning_db';
// Create connection
$conn = new mysqli($host, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("සම්බන්ධතාවය අසාර්ථකයි: " . $conn->connect_error);
}
// Set character set to UTF-8 for Sinhala support
mysqli_set_charset($conn, "utf8");
?>
සියලුම පරිශීලකයින්ට පිවිසිය හැකි login සහ register පිටු නිර්මාණය කරමු.
login.phpපරිශීලකයින්ට පද්ධතියට පිවිසීමට මෙම පිටුව භාවිතා කරයි. සාර්ථක පිවිසීමකින් පසු, ඔවුන්ව ඔවුන්ගේ අදාළ උපකරණ පුවරුව වෙත යොමු කෙරේ.
<?php
require 'config/db_connect.php';
$error = '';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = $_POST['email'];
$password = $_POST['password'];
$sql = "SELECT id, password, user_type FROM users WHERE email = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows == 1) {
$user = $result->fetch_assoc();
if (password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['user_type'] = $user['user_type'];
if ($user['user_type'] == 'student') {
header("Location: student/index.php");
} else {
header("Location: teacher/index.php");
}
exit();
} else {
$error = "මුරපදය වැරදියි!";
}
} else {
$error = "මෙම විද්යුත් තැපෑල ලියාපදිංචි වී නොමැත!";
}
}
// HTML form for login goes here...
?>
register.php ගොනුවද මීට සමානව සාදාගත යුතුය. එහිදී පරිශීලකයාගේ නම, විද්යුත් තැපෑල, මුරපදය, සහ පරිශීලක වර්ගය (student/teacher) ලබාගෙන password_hash() ශ්රිතය භාවිතයෙන් මුරපදය සුරක්ෂිතව දත්ත සමුදායට ඇතුළත් කරන්න.
student/index.phpශිෂ්යයෙකු පිවිසි පසු පෙනෙන ප්රධාන පිටුව මෙයයි. මෙහිදී ශිෂ්යයාට අදාළ පාඩම්, ප්රගතිය, සහ අනෙකුත් තොරතුරු පෙන්වයි.
<?php
require '../config/db_connect.php';
// Check if user is logged in and is a student
if (!isset($_SESSION['user_id']) || $_SESSION['user_type'] != 'student') {
header("Location: ../login.php");
exit();
}
$student_id = $_SESSION['user_id'];
?>
<!DOCTYPE html>
<html lang="si">
<head>
<title>ශිෂ්ය උපකරණ පුවරුව</title>
<!-- Bootstrap CSS -->
</head>
<body>
<div class="container">
<h1>ආයුබෝවන්, ශිෂ්යයා!</h1>
<p>ඔබගේ පාඩම් මෙතනින් ආරම්භ කරන්න.</p>
<!-- Display lessons assigned to the student -->
<a href="../logout.php" class="btn btn-danger">ඉවත් වන්න</a>
</div>
</body>
</html>
teacher/index.phpගුරුවරයෙකු පිවිසි පසු පෙනෙන ප්රධාන පිටුව මෙයයි. මෙහිදී ගුරුවරයාට පාඩම් කළමනාකරණය කිරීමට සහ ශිෂ්යයන්ගේ විස්තර බැලීමට හැකිය.
<?php
require '../config/db_connect.php';
// Check if user is logged in and is a teacher
if (!isset($_SESSION['user_id']) || $_SESSION['user_type'] != 'teacher') {
header("Location: ../login.php");
exit();
}
$teacher_id = $_SESSION['user_id'];
?>
<!DOCTYPE html>
<html lang="si">
<head>
<title>ගුරු උපකරණ පුවරුව</title>
<!-- Bootstrap CSS -->
</head>
<body>
<div class="container">
<h1>ආයුබෝවන්, ගුරුතුමනි!</h1>
<p>ඔබගේ පාඩම් මෙතනින් කළමනාකරණය කරන්න.</p>
<a href="create_lesson.php" class="btn btn-primary">නව පාඩමක් සාදන්න</a>
<a href="manage_lessons.php" class="btn btn-secondary">පාඩම් කළමනාකරණය</a>
<a href="../logout.php" class="btn btn-danger">ඉවත් වන්න</a>
</div>
</body>
</html>
මෙම නිබන්ධනය මගින් ඔබට e-learning වෙබ් අඩවියක මූලික රාමුවක් ලබා දේ. මෙය තවදුරටත් දියුණු කිරීමට ඔබට හැකිය.