Setting Up the PHP Backend
Begin by establishing the backbone of your login system with PHP. A simple User class can manage user information and authentication status. For the login mechanism, consider using a secure method to verify user credentials, such as password hashing and session management.
<?php
if (empty($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); }
session_start();
class User {
public $username;
private $passwordHash;
public function __construct($username, $passwordHash) {
$this->username = $username;
$this->passwordHash = $passwordHash;
}
public function verifyPassword($password) {
return password_verify($password, $this->passwordHash);
} } // Simulate a user for demonstration purposes
$demoUser = new User("Alex", password_hash("securepassword123", PASSWORD_DEFAULT)); // Verify login credentials (normally, you'd get these from a database)
if (isset($_POST['username']) && isset($_POST['password'])) {
if ($demoUser->username === $_POST['username'] && $demoUser->verifyPassword($_POST['password'])) {
$_SESSION['user'] = $demoUser->username;
echo "Login successful. Welcome, " . htmlspecialchars($demoUser->username) . "!";
}
else {
echo "Login failed. Please check your credentials.";
} }
?>
Include this token as a hidden field within your form to ensure that form submissions are valid and originated from your website.
Crafting the Form
Create your login form with HTML and style it with modern CSS:
<form method="POST" action="login.php">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
<button type="submit">Login</button>
</form>
Modern CSS for Styling
Use modern CSS techniques to style your form, ensuring it’s responsive and visually appealing. Consider using CSS variables for easy theme management and Flexbox or Grid for layout.
:root { --primary-color: #007bff; --text-color: #444; }
form { max-width: 400px; margin: auto; padding: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); }
form label { margin-top: 10px; display: block; }
form input { width: 100%; padding: 10px; margin-top: 5px; box-sizing: border-box; }
button { background-color: var(--primary-color); color: white; padding: 10px 20px; border: none; cursor: pointer; margin-top: 10px; }
button:hover { background-color: darken(var(--primary-color), 10%); }
Adding JavaScript for Dynamic Interactions
document.getElementById('loginForm').addEventListener('submit', function(e) {
const username = document.getElementById('username').value;
const password = document.getElementById('password').value;
if (username.length === 0 || password.length === 0) {
alert('Please fill in all fields.');
e.preventDefault(); // Prevent form submission
}
});
Discover more from Kvnbbg.fr
Subscribe to get the latest posts sent to your email.