FAUSTINE MWOYA November 12, 2025

Jinsi ya Kutengeneza Multi-User Database Structure

Katika mifumo mingi ya kisasa (mfano school systems, sales management systems, chat systems, au blog dashboards), kuna aina tofauti za watumiaji kama vile:

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/
Share this post
Previous Next

Comments

0
No comments yet. Be the first to comment.

Continue Reading

Subscribe

Get new updates

Jiunge upokee posts mpya, tutorials, na updates za mifumo moja kwa moja kwenye email yako.

Chat na Faulink