Jinsi ya Kutengeneza Multi-User Database Structure
Admin β mwenye mamlaka kamili ya kusimamia mfumo
Teacher/Employee β anayefanya kazi maalum ndani ya mfumo
Student/Customer/User β anayepokea huduma au taarifa
Ili kuruhusu haya yote yafanye kazi vizuri, tunahitaji multi-user database structure yenye uwezo wa kutofautisha watumiaji kwa majukumu yao (roles).
π― Lengo la Somo Hili
Baada ya kusoma makala hii, utaweza:
β Kuunda database structure ya watumiaji wengi
β Kutumia roles au user types kutenganisha majukumu
β Kujenga msingi wa mfumo wa login wenye access tofauti
π§© Hatua ya 1: Unda Database
Fungua phpMyAdmin na tengeneza database inayoitwa multi_user_system
CREATE DATABASE multi_user_system;
USE multi_user_system;
π§© Hatua ya 2: Unda Jedwali la Watumiaji (Users Table)
Tutaweka taarifa zote muhimu za kila mtumiaji kama jina, barua pepe, neno la siri, na aina ya akaunti (role).
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL,
email VARCHAR(150) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
role ENUM('admin', 'teacher', 'student') DEFAULT 'student',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
π‘ Ufafanuzi:
role ENUM('admin','teacher','student') β inaeleza aina ya mtumiaji.
password itahifadhi neno la siri lililofichwa kwa password_hash().
π§© Hatua ya 3: Kuunganisha PHP na Database
Faili: db_connect.php
<?php
$host = "localhost";
$user = "root";
$pass = "";
$dbname = "multi_user_system";
$conn = new mysqli($host, $user, $pass, $dbname);
if ($conn->connect_error) {
die("Database connection failed: " . $conn->connect_error);
}
?>
π§© Hatua ya 4: Kuunda Registration Form
Faili: register.php
<?php include 'db_connect.php'; ?>
<!DOCTYPE html>
<html>
<head>
<title>Multi-User Registration</title>
<style>
body { font-family: Arial; margin: 30px; }
form { max-width: 400px; margin: auto; }
input, select { width: 100%; padding: 10px; margin: 5px 0; }
button { background: green; color: white; padding: 10px; border: none; cursor: pointer; }
</style>
</head>
<body>
<h2>Multi-User Registration</h2>
<form method="POST">
Username: <input type="text" name="username" required><br>
Email: <input type="email" name="email" required><br>
Password: <input type="password" name="password" required><br>
Role:
<select name="role">
<option value="student">Student</option>
<option value="teacher">Teacher</option>
<option value="admin">Admin</option>
</select><br>
<button type="submit" name="register">Register</button>
</form>
<?php
if (isset($_POST['register'])) {
$username = $_POST['username'];
$email = $_POST['email'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$role = $_POST['role'];
$sql = "INSERT INTO users (username, email, password, role)
VALUES ('$username', '$email', '$password', '$role')";
if ($conn->query($sql)) {
echo "<p style='color:green;'>β User Registered Successfully!</p>";
} else {
echo "<p style='color:red;'>β Error: " . $conn->error . "</p>";
}
}
?>
</body>
</html>
π§© Hatua ya 5: Kuunda Login Form
Faili: login.php
<?php
include 'db_connect.php';
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>Multi-User Login</title>
<style>
body { font-family: Arial; margin: 30px; }
form { max-width: 400px; margin: auto; }
input { width: 100%; padding: 10px; margin: 5px 0; }
button { background: blue; color: white; padding: 10px; border: none; cursor: pointer; }
</style>
</head>
<body>
<h2>Login</h2>
<form method="POST">
Email: <input type="email" name="email" required><br>
Password: <input type="password" name="password" required><br>
<button type="submit" name="login">Login</button>
</form>
<?php
if (isset($_POST['login'])) {
$email = $_POST['email'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE email='$email'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
if (password_verify($password, $row['password'])) {
$_SESSION['username'] = $row['username'];
$_SESSION['role'] = $row['role'];
// Redirect based on role
if ($row['role'] == 'admin') {
header("Location: admin_dashboard.php");
} elseif ($row['role'] == 'teacher') {
header("Location: teacher_dashboard.php");
} else {
header("Location: student_dashboard.php");
}
} else {
echo "<p style='color:red;'>β Invalid Password!</p>";
}
} else {
echo "<p style='color:red;'>β οΈ User not found!</p>";
}
}
?>
</body>
</html>
π§© Hatua ya 6: Kila Mtumiaji Aingie Dashboard Yake
admin_dashboard.php
<?php
session_start();
if ($_SESSION['role'] != 'admin') { header("Location: login.php"); exit; }
?>
<h2>Welcome Admin, <?= $_SESSION['username']; ?> π</h2>
<p>Unaweza kudhibiti watumiaji wote na taarifa za mfumo.</p>
<a href="logout.php">Logout</a>
teacher_dashboard.php
<?php
session_start();
if ($_SESSION['role'] != 'teacher') { header("Location: login.php"); exit; }
?>
<h2>Welcome Teacher, <?= $_SESSION['username']; ?> π</h2>
<p>Unaweza kudhibiti taarifa za wanafunzi na masomo.</p>
<a href="logout.php">Logout</a>
student_dashboard.php
<?php
session_start();
if ($_SESSION['role'] != 'student') { header("Location: login.php"); exit; }
?>
<h2>Welcome Student, <?= $_SESSION['username']; ?> π</h2>
<p>Karibu kwenye mfumo wako wa kujifunzia.</p>
<a href="logout.php">Logout</a>
π§© Hatua ya 7: Logout
Faili: logout.php
<?php
session_start();
session_destroy();
header("Location: login.php");
?>
π‘ Vidokezo Muhimu
Tumia password_hash() na password_verify() kwa usalama wa nywila.
Tenganisha majukumu (roles) vizuri ili kila mtumiaji aone tu anachostahili.
Unaweza kuongeza tables nyingine kama classes, subjects, au sales ambazo zinahusiana na user_id.
β Hitimisho
Sasa una database structure kamili ya multi-user system yenye uwezo wa kuunganisha watumiaji tofauti kulingana na majukumu yao. Mfumo huu unaweza kupanuliwa kwa urahisi kuwa school system, management dashboard, au business platform.
π Soma zaidi hapa:
π https://www.faulink.com/