Jinsi ya Kutengeneza Login Table na Authentication Data
Katika makala hii, tutajifunza hatua kwa hatua jinsi ya:
Kutengeneza Login Table kwenye MySQL
Kuunda User Registration & Login Pages
Kuweka Authentication Check kwa usalama wa mfumo
⚙️ Mahitaji Muhimu
PHP (kwa logic ya mfumo)
MySQL Database (kwa kuhifadhi data za watumiaji)
HTML + CSS (kwa muonekano wa forms)
XAMPP au Laragon (kwa server ya local)
🧩 Hatua ya 1: Tengeneza Database na Login Table
Fungua phpMyAdmin na tengeneza database inayoitwa user_auth_system.
Kisha andika SQL ifuatayo:
CREATE DATABASE user_auth_system;
USE user_auth_system;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE,
email VARCHAR(100),
password VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
✅ Hapa tumetumia password VARCHAR(255) ili kuhifadhi neno la siri lililofichwa kwa hashing.
🧩 Hatua ya 2: Kuunganisha PHP na Database
Faili: db_connect.php
<?php
$host = "localhost";
$user = "root";
$pass = "";
$dbname = "user_auth_system";
$conn = new mysqli($host, $user, $pass, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
🧩 Hatua ya 3: Kuunda Registration Page
Faili: register.php
<?php include 'db_connect.php'; ?>
<!DOCTYPE html>
<html>
<head>
<title>User Registration</title>
<style>
body { font-family: Arial; margin: 30px; }
form { max-width: 400px; margin: auto; }
input { width: 100%; padding: 10px; margin: 5px 0; }
button { background: green; color: white; border: none; padding: 10px; cursor: pointer; }
</style>
</head>
<body>
<h2>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>
<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);
$sql = "INSERT INTO users (username, email, password) VALUES ('$username','$email','$password')";
if ($conn->query($sql)) {
echo "<p style='color:green;'>✅ Registration successful!</p>";
} else {
echo "<p style='color:red;'>⚠️ Error: " . $conn->error . "</p>";
}
}
?>
</body>
</html>
💡 Ufafanuzi:
password_hash() inaficha neno la siri kwa usalama.
Tunahifadhi jina la mtumiaji, barua pepe, na neno la siri lililofichwa.
🧩 Hatua ya 4: Kuunda Login Page
Faili: login.php
<?php
include 'db_connect.php';
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>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; border: none; padding: 10px; cursor: pointer; }
</style>
</head>
<body>
<h2>User Login</h2>
<form method="POST">
Username: <input type="text" name="username" required><br>
Password: <input type="password" name="password" required><br>
<button type="submit" name="login">Login</button>
</form>
<?php
if (isset($_POST['login'])) {
$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['username'] = $row['username'];
header("Location: dashboard.php");
} else {
echo "<p style='color:red;'>❌ Wrong password!</p>";
}
} else {
echo "<p style='color:red;'>❌ User not found!</p>";
}
}
?>
</body>
</html>
🧩 Hatua ya 5: Dashboard na Authentication Check
Faili: dashboard.php
<?php
session_start();
if (!isset($_SESSION['username'])) {
header("Location: login.php");
exit;
}
?>
<!DOCTYPE html>
<html>
<head><title>Dashboard</title></head>
<body>
<h2>Welcome, <?= $_SESSION['username']; ?> 🎉</h2>
<p>Umeingia vizuri kwenye mfumo wako wa PHP Authentication.</p>
<a href="logout.php">Logout</a>
</body>
</html>
🧩 Hatua ya 6: Logout Page
Faili: logout.php
<?php
session_start();
session_destroy();
header("Location: login.php");
?>
💡 Vidokezo Muhimu vya Usalama
Tumia password_hash() na password_verify() kila mara.
Epuka SQL injection kwa kutumia prepared statements.
Weka session timeout kwa usalama zaidi.
✅ Hitimisho
Sasa umejifunza jinsi ya kujenga mfumo kamili wa Login na Authentication kwa PHP na MySQL.
Mfumo huu unaweza kupanuliwa kwa:
Kuongeza User Roles (Admin, User)
Kufanya Password Reset System
Kutumia Security Tokens (CSRF protection)
🔗 Soma zaidi hapa:
👉 https://www.faulink.com/