Form ya Registration ni muhimu kwa web applications zinazohitaji watumiaji kujisajili.
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.