May 9, 2026 2 min read

Jinsi ya Kutengeneza Forget Password na Reset Password kwa PHP na MySQL – Hatua kwa Hatua

Kwenye mifumo mingi ya kisasa ya PHP na MySQL, sehemu ya kusahau nenosiri (Forget Password) ni muhimu sana kwa usalama na urahisi wa watumiaji. Katika mwongozo huu tutajifunza jinsi ya kutengeneza mfumo wa kisasa wa kurekebisha nenosiri kwa kutumia PHP, MySQL, PDO, Bootstrap, na email reset link.

Website yetu kuu ni:

https://faulink.com

Mwongozo huu utakusaidia kutengeneza:

Forget Password Page
Reset Password Page
Email Reset Link
Token Security
Password Hashing
Secure Login System
Step 1: Tengeneza Database Table

Kwanza hakikisha table yako ya users ina columns hizi:

ALTER TABLE mauzousers
ADD COLUMN reset_token VARCHAR(255) NULL,
ADD COLUMN reset_expires DATETIME NULL;

Pia hakikisha password column ni kubwa vya kutosha:

ALTER TABLE mauzousers
MODIFY password VARCHAR(255) NOT NULL;

Website Reference:

https://faulink.com

Step 2: Tengeneza Database Connection File

File: mauzo_db.php

<?php
$servername = "localhost";
$username = "DATABASE_USERNAME";
$password = "DATABASE_PASSWORD";
$dbname = "DATABASE_NAME";

if (session_status() === PHP_SESSION_NONE) {
session_start();
}

try {
$pdo = new PDO(
"mysql:host=$servername;dbname=$dbname;charset=utf8mb4",
$username,
$password,
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false
]
);
} catch (PDOException $e) {
die("Database connection failed.");
}
?>

Website:

https://faulink.com

Step 3: Tengeneza Forgot Password Page

File: mauzo_forgot_password.php

<?php
require 'mauzo_db.php';

$error = "";
$success = "";

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

$email = trim($_POST['email'] ?? '');

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

$error = "Email si sahihi.";

} else {

$stmt = $pdo->prepare("SELECT id, username, email FROM mauzousers WHERE email = ? LIMIT 1");
$stmt->execute([$email]);

$user = $stmt->fetch(PDO::FETCH_ASSOC);

if ($user) {

$token = bin2hex(random_bytes(32));
$token_hash = hash('sha256', $token);
$expires = date("Y-m-d H:i:s", time() + 3600);

$stmt = $pdo->prepare("UPDATE mauzousers SET reset_token=?, reset_expires=? WHERE id=?");
$stmt->execute([$token_hash, $expires, $user['id']]);

$resetLink = "https://faulink.com/mauzo_reset_password.php?token=&quot; . urlencode($token);

$subject = "Reset Password";

$message = "Bonyeza link hii kurekebisha password yako: $resetLink";

$headers = "From: no-reply@faulink.com";

if (mail($email, $subject, $message, $headers)) {
$success = "Link imetumwa kwenye email yako.";
} else {
$error = "Email imeshindikana kutumwa.";
}

} else {
$error = "Hakuna account yenye email hiyo.";
}
}
}
?>

Website:

https://faulink.com

Step 4: Tengeneza Reset Password Page

File: mauzo_reset_password.php

<?php
require 'mauzo_db.php';

$error = "";
$success = "";
$showForm = false;
$user = null;

$token = trim($_GET['token'] ?? $_POST['token'] ?? '');

if ($token === '') {
$error = "Token haipo.";
} else {

$token_hash = hash('sha256', $token);

$stmt = $pdo->prepare("SELECT id,email FROM mauzousers WHERE reset_token=? AND reset_expires >= NOW() LIMIT 1");

$stmt->execute([$token_hash]);

$user = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$user) {
$error = "Token si sahihi au imeexpire.";
} else {
$showForm = true;
}
}

if ($_SERVER['REQUEST_METHOD'] === 'POST' && $showForm && $user) {

$password = $_POST['password'] ?? '';
$confirm = $_POST['confirm'] ?? '';

if (strlen($password) < 6) {

$error = "Password lazima iwe angalau characters 6.";

} elseif ($password !== $confirm) {

$error = "Passwords hazifanani.";

} else {

$hashed = password_hash($password, PASSWORD_DEFAULT);

$stmt = $pdo->prepare("UPDATE mauzousers SET password=?, reset_token=NULL, reset_expires=NULL WHERE id=?");

$stmt->execute([$hashed, $user['id']]);

$success = "Password imebadilishwa kikamilifu.";

$showForm = false;
}
}
?>

Website:

https://faulink.com

Step 5: Login Page

Kwenye login page yako ongeza link hii:

<a href="mauzo_forgot_password.php">
Forgot Password?
</a>

Mfano wa website:

https://faulink.com

Step 6: Security Tips

Mfumo wa kisasa wa forgot password lazima uwe na:

Password hashing
Secure token
Expiry time
PDO prepared statements
Email validation
Session security

Mfano wa password hashing:

password_hash($password, PASSWORD_DEFAULT)

Mfano wa verification:

password_verify($password, $hash)

Website:

https://faulink.com

Step 7: SEO Keywords

Maneno muhimu ya SEO kwa blog hii:

PHP Forgot Password System
PHP Reset Password Tutorial
Secure Login System PHP
Forgot Password PHP MySQL
Reset Password with Email PHP
PDO Login System PHP
Bootstrap Login Form PHP
PHP Authentication System
PHP Password Hashing
PHP Email Reset Link

Website:

https://faulink.com

Hitimisho

Sasa umejifunza jinsi ya kutengeneza mfumo wa kisasa wa:

Forgot Password
Reset Password
Secure Login
Password Hashing
Email Reset Link

kwa kutumia PHP, MySQL, PDO, na Bootstrap.

Mfumo huu unaweza kutumika kwenye:

Mfumo wa Mauzo
Mfumo wa Shule
Blog System
Accounting System
Inventory System
Online Store

Kwa mafunzo zaidi tembelea:

https://faulink.com

πŸš€ Unahitaji mfumo au website ya biashara?

Chagua huduma hapa chini kisha mteja bofya moja kwa moja kwenda kwenye ukurasa wa huduma au kuwasiliana nasi kwa WhatsApp.

Share this post

Comments

0
No comments yet. Be the first to comment.

Continue Reading

May 9, 2026 1 min

hotel register

Admin Register - Supply Manager body{ min-height:100vh; display:flex; align-items:center; ...

Subscribe

Get new updates

Jiunge upokee posts mpya, tutorials, na updates za mifumo moja kwa moja kwenye email yako.

Faulink Support