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/