Database Structure (MySQL):
CREATE DATABASE userdb;
USE userdb;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE,
password VARCHAR(255)
);
Registration (register.php):
<?php
$conn = new mysqli("localhost", "root", "", "userdb");
if($_SERVER["REQUEST_METHOD"] == "POST"){
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$sql = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
if($conn->query($sql)) {
echo "Registration successful! <a href='login.php'>Login</a>";
} else {
echo "Error: " . $conn->error;
}
}
?>
<form method="post">
Username: <input type="text" name="username" required><br>
Password: <input type="password" name="password" required><br>
<input type="submit" value="Register">
</form>
Login (login.php):
<?php
session_start();
$conn = new mysqli("localhost", "root", "", "userdb");
if($_SERVER["REQUEST_METHOD"] == "POST"){
$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['user'] = $username;
echo "Login successful! <a href='dashboard.php'>Go to Dashboard</a>";
} else {
echo "Invalid password!";
}
} else {
echo "User not found!";
}
}
?>
<form method="post">
Username: <input type="text" name="username" required><br>
Password: <input type="password" name="password" required><br>
<input type="submit" value="Login">
</form>
Dashboard (dashboard.php):
<?php
session_start();
if(!isset($_SESSION['user'])) {
die("Access denied. <a href='login.php'>Login</a>");
}
echo "Welcome, " . $_SESSION['user'];
echo " | <a href='logout.php'>Logout</a>";
?>
Logout (logout.php):
<?php
session_start();
session_destroy();
echo "Logged out! <a href='login.php'>Login again</a>";
?>
Explanation:
- User registers → data stored in MySQL database.
- Passwords stored with hashing (
password_hash
). - User logs in → sessions keep track of login state.
Leave a Reply