Jinsi ya Kutengeneza Registration Form kwa PHP
Misingi muhimu:
Input validation – hakikisha data sahihi inaingizwa.
Password hashing – hifadhi password salama.
PDO + Prepared Statements – salama dhidi ya SQL Injection.
Email uniqueness check – hakikisha hakuna duplicate emails.
⚙️ 2. Database Setup
Tengeneza table ya users:
CREATE DATABASE user_system;
USE user_system;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
💡 Maelezo:
UNIQUE constraints zinazuia duplication ya username na email.
⚙️ 3. Database Connection (config.php)
<?php
$dsn = "mysql:host=localhost;dbname=user_system;charset=utf8mb4";
$username = "root";
$password = "";
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("❌ Connection failed: " . $e->getMessage());
}
?>
➕ 4. Registration Form (register.php)
<?php
include 'config.php';
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$username = trim($_POST['username']);
$email = trim($_POST['email']);
$password = $_POST['password'];
$confirm_password = $_POST['confirm_password'];
// Basic validation
if($password !== $confirm_password){
$error = "❌ Passwords do not match!";
} else {
// Check if email already exists
$stmt = $pdo->prepare("SELECT * FROM users WHERE email=:email");
$stmt->execute(['email'=>$email]);
if($stmt->rowCount() > 0){
$error = "❌ Email already registered!";
} else {
// Hash password
$hash = password_hash($password, PASSWORD_DEFAULT);
// Insert user
$stmt = $pdo->prepare("INSERT INTO users (username,email,password) VALUES (:username,:email,:password)");
$stmt->execute(['username'=>$username,'email'=>$email,'password'=>$hash]);
$success = "✅ Registration successful! <a href='login.php'>Login here</a>";
}
}
}
?>
<h2>📝 User Registration</h2>
<?php
if(isset($error)) echo "<p style='color:red;'>$error</p>";
if(isset($success)) echo "<p style='color:green;'>$success</p>";
?>
<form method="POST">
<input type="text" name="username" placeholder="Username" required><br><br>
<input type="email" name="email" placeholder="Email" required><br><br>
<input type="password" name="password" placeholder="Password" required><br><br>
<input type="password" name="confirm_password" placeholder="Confirm Password" required><br><br>
<button type="submit">Register</button>
</form>
<p>Already have an account? <a href="login.php">Login here</a></p>
🧠 5. Vidokezo Muhimu
Password Hashing:
$hash = password_hash($password, PASSWORD_DEFAULT);
Hakikisha password hazihifadhiwi wazi kwenye database.
PDO + Prepared Statements:
Hii inazuia SQL Injection.
Input Validation:
Hakikisha password na confirm password zinafanana.
Hakikisha email si duplicate.
HTTPS:
Hifadhi data salama wakati inatumwa kwa server.
✅ 6. Hitimisho
Mfumo huu ni msingi wa user registration system salama.
Unaweza kuongeza email verification, captcha, na 2FA kwa usalama zaidi.
PDO + prepared statements + password hashing = best practice kwa security.
🔗 Tembelea:
👉 https://www.faulink.com/
Kwa mafunzo zaidi ya PHP, MySQL, PDO, na web development.