⭐ ප්රායෝගික පැවරුම: Login පිටුව සහ Dashboard එක නිර්මාණය කිරීම
පියවර 1: පරිපාලක (Admin) පරිශීලකයෙක් ඇතුළත් කිරීම
පළමුව, අපට ලොග් වීමට පරිශීලකයෙක් අවශ්යයි. පහත PHP කේතය ක්රියාත්මක කර `'admin123'` යන මුරපදයට අදාළ හැෂ් එක ලබාගන්න. (ඔබට මෙය කිරීමට වෙනම PHP ගොනුවක් තාවකාලිකව සාදාගත හැක).
<?php echo password_hash('admin123', PASSWORD_DEFAULT); ?>
ඉහත කේතයෙන් ලැබෙන දිගු හැෂ් අගය copy කරගෙන, phpMyAdmin හි `users` වගුවට පහත SQL විධානය මගින් admin කෙනෙක් ඇතුළත් කරන්න. (ලැබුණු හැෂ් අගය 'YOUR_HASHED_PASSWORD_HERE' වෙනුවට ආදේශ කරන්න).
INSERT INTO `users` (`name`, `email`, `password`, `role`) VALUES
('Admin User', 'admin@supermarket.com', 'YOUR_HASHED_PASSWORD_HERE', 'admin');
පියවර 2: පිවිසුම් ෆෝරමය (`login.php`) සෑදීම
ඔබගේ `supermarket` ප්රධාන ෆෝල්ඩරය තුළ `login.php` නමින් ගොනුවක් සාදා පහත කේතය ඇතුළත් කරන්න.
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-light">
<div class="container">
<div class="row justify-content-center">
<div class="col-md-5 mt-5">
<div class="card">
<div class="card-header text-center">
<h3>Supermarket Login</h3>
</div>
<div class="card-body">
<form action="handle_login.php" method="POST">
<div class="mb-3">
<label for="email" class="form-label">Email</label>
<input type="email" name="email" class="form-control" required>
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<button type="submit" class="btn btn-primary w-100">Login</button>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
පියවර 3: Login ක්රියාවලිය හැසිරවීම (`handle_login.php`)
`supermarket` ෆෝල්ඩරය තුළ `handle_login.php` නමින් ගොනුවක් සාදා පහත කේතය ඇතුළත් කරන්න.
<?php
session_start();
include 'includes/db_connect.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = $_POST['email'];
$password = $_POST['password'];
$sql = "SELECT id, name, password, role FROM users WHERE email = ?";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "s", $email);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if (mysqli_num_rows($result) == 1) {
$user = mysqli_fetch_assoc($result);
// Verify password
if (password_verify($password, $user['password'])) {
// Password is correct, start session
$_SESSION['loggedin'] = true;
$_SESSION['id'] = $user['id'];
$_SESSION['name'] = $user['name'];
$_SESSION['role'] = $user['role'];
header("location: dashboard.php");
} else {
echo "Invalid password.";
}
} else {
echo "No account found with that email.";
}
mysqli_stmt_close($stmt);
}
mysqli_close($conn);
?>
පියවර 4: උපකරණ පුවරුව (`dashboard.php`) සහ පිටවීම (`logout.php`)
`dashboard.php` ගොනුව සාදන්න. මෙය ලොග් වූ පරිශීලකයින්ට පමණක් පිවිසිය හැකි පිටුවයි.
<?php
session_start();
// If user is not logged in, redirect to login page
if (!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true) {
header("location: login.php");
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="mt-5">
<h1>Welcome, <?php echo htmlspecialchars($_SESSION["name"]); ?>!</h1>
<p>Your role is: <strong><?php echo $_SESSION["role"]; ?></strong></p>
<p>This is your dashboard.</p>
<a href="logout.php" class="btn btn-danger">Logout</a>
</div>
</div>
</body>
</html>
අවසාන වශයෙන්, `logout.php` ගොනුව සාදන්න.
<?php
session_start();
$_SESSION = array(); // Unset all session variables
session_destroy(); // Destroy the session
header("location: login.php");
exit;
?>
දැන් `http://localhost/supermarket/login.php` වෙත ගොස් ඔබ සෑදූ admin ගිණුමෙන් ලොග් වී බලන්න. ඔබව dashboard එක වෙත යොමු කරන්නේ නම්, ඔබ මෙම මොඩියුලය සාර්ථකව නිම කර ඇත!