Lupa kode password di php mysqli

Dalam posting ini, kita akan melihat contoh untuk mempelajari cara memulihkan kata sandi yang terlupa. Dalam contoh ini kami memiliki formulir lupa kata sandi untuk mendapatkan nama pengguna atau email untuk memulihkan kata sandi. Setelah formulir dikirimkan, kami mengirimkan email pemulihan kata sandi ke pengguna

Email pemulihan kata sandi memiliki tautan ke halaman tempat kami dapat mengatur ulang kata sandi

Lupa Kode Sandi

Kode HTML ini menunjukkan formulir lupa kata sandi

Tidak ingat kata sandi. php

handleForgot();
}
?>


Forgot Password





	

Username

/Model/Anggota. php

ds = new DataSource();
    }

    /**
     * to get member record by username
     *
     * @param string $username
     * @return array
     */
    public function getMember($username)
    {
        $query = 'SELECT * FROM tbl_member where username = ?';
        $paramType = 's';
        $paramValue = array(
            $username
        );
        $memberRecord = $this->ds->select($query, $paramType, $paramValue);
        return $memberRecord;
    }

    /**
     * main function that handles the forgot password
     *
     * @return string[]
     */
    public function handleForgot()
    {
        if (! empty($_POST["username"])) {
            $memberRecord = $this->getMember($_POST["username"]);
            require_once __DIR__ . "/PasswordReset.php";
            $passwordReset = new PasswordReset();
            $token = $this->generateRandomString(97);
            if (! empty($memberRecord)) {
                $passwordReset->insert($memberRecord[0]['id'], $token);
                $this->sendResetPasswordEmail($memberRecord, $token);
            } else {
                // the input username is invalid
                // do not display a message saying 'username as invalid'
                // that is a security issue. Instead,
                // sleep for 2 seconds to mimic email sending duration
                sleep(2);
            }
        }
        // whatever be the case, show the same message for security purposes
        $displayMessage = array(
            "status" => "success",
            "message" => "Check your email to reset password."
        );
        return $displayMessage;
    }

    /**
     * to send password recovery email
     * you may substitute this code with SMTP based email
     * Refer https://phppot.com/php/send-email-in-php-using-gmail-smtp/ to send smtp
     * based email
     *
     * @param array $memberListAry
     * @param string $token
     */
    public function sendResetPasswordEmail($memberListAry, $token)
    {
        $resetUrl = 'reset';
        $emailBody = 'Hi, 
To reset your password, click this link ' . $resetUrl; $to = $memberListAry[0]["email"]; $subject = 'Reset password'; mail($to, $subject, $emailBody); } public function updatePassword($id, $password) { $hashedPassword = password_hash($password, PASSWORD_DEFAULT); $query = 'UPDATE tbl_member SET password = ? WHERE id = ?'; $paramType = 'si'; $paramValue = array( $hashedPassword, $id ); $this->ds->execute($query, $paramType, $paramValue); $displayMessage = array( "status" => "success", "message" => "Password reset successfully." ); return $displayMessage; } /** * use this function if you have PHP version 7 or greater * else use the below fuction generateRandomString * * @param int $length * @param string $keyspace * @throws \RangeException * @return string */ function getRandomString(int $length = 64, string $keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'): string { if ($length < 1) { throw new \RangeException("Length must be a positive integer"); } $pieces = []; $max = mb_strlen($keyspace, '8bit') - 1; for ($i = 0; $i < $length; ++ $i) { $pieces[] = $keyspace[random_int(0, $max)]; } return implode('', $pieces); } /** * this generates predictable random strings. * So the best * option is to use the above function getRandomString * and to use that, you need PHP 7 or above * * @param number $length * @return string */ function generateRandomString($length = 10) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i ++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } }
_

Atur ulang kata sandi

/Model/PasswordReset. php

ds = new DataSource();
    }

    public function insert($memberId, $token)
    {
        $query = 'INSERT INTO tbl_password_reset (member_id, password_recovery_token, expire_at, is_valid) VALUES (?, ?, ?, ?)';
        $paramType = 'sssi';
        $time = date('Y-m-d H:i:s');
        // expire the token after 12 hours
        $RESET_TOKEN_LIFE = '12 hours';
        $expireAt = date('Y-m-d H:i:s', strtotime($time . ' + ' . $RESET_TOKEN_LIFE));

        $paramValue = array(
            $memberId,
            $token,
            $expireAt,
            1
        );
        $memberId = $this->ds->insert($query, $paramType, $paramValue);
    }

    public function getMemberForgotByResetToken($recoveryToken)
    {
        $query = 'SELECT * FROM tbl_password_reset where password_recovery_token = ? AND is_valid = 1 AND expire_at >= now()';
        $paramType = 's';
        $paramValue = array(
            $recoveryToken
        );
        $memberRecord = $this->ds->select($query, $paramType, $paramValue);
        return $memberRecord;
    }

    public function expireToken($recoveryToken)
    {
        $query = 'UPDATE tbl_password_reset SET is_valid = 0, expired_at = now() WHERE password_recovery_token = ?';
        $paramType = 's';
        $paramValue = array(
            $recoveryToken
        );
        $this->ds->execute($query, $paramType, $paramValue);
    }
}

Atur ulang formulir kata sandi

reset-kata sandi. php

getMemberForgotByResetToken($token);
    if (empty($memberRecord)) {
        // token expired
        // do not say that your token has expired for security reasons
        // never reveal system state to the end user
        echo 'Invalid request!';
        exit();
    }
}
if (! empty($_POST["reset-btn"])) {
    $passwordReset->expireToken($token);
    require_once __DIR__ . '/Model/Member.php';
    $member = new Member();
    $displayMessage = $member->updatePassword($memberRecord[0]['member_id'], $_POST["password"]);
}
?>


Reset Password





	

Password

Confirm Password

Pulihkan Struktur Basis Data Kata Sandi

struktur. sql

-- phpMyAdmin SQL Dump
-- version 5.0.2
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Sep 17, 2020 at 04:16 PM
-- Server version: 8.0.17
-- PHP Version: 7.4.8

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `forgot-password-reset`
--

-- --------------------------------------------------------

--
-- Table structure for table `tbl_member`
--

CREATE TABLE `tbl_member` (
  `id` int(11) NOT NULL,
  `username` varchar(255) NOT NULL,
  `password` varchar(200) NOT NULL,
  `email` varchar(255) NOT NULL,
  `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Table structure for table `tbl_password_reset`
--

CREATE TABLE `tbl_password_reset` (
  `id` int(11) NOT NULL,
  `member_id` int(11) NOT NULL,
  `password_recovery_token` varchar(255) NOT NULL,
  `expire_at` timestamp NULL DEFAULT NULL,
  `is_valid` tinyint(4) NOT NULL,
  `expired_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `tbl_member`
--
ALTER TABLE `tbl_member`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `tbl_password_reset`
--
ALTER TABLE `tbl_password_reset`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `tbl_member`
--
ALTER TABLE `tbl_member`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;

--
-- AUTO_INCREMENT for table `tbl_password_reset`
--
ALTER TABLE `tbl_password_reset`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
_

Lupa email pemulihan kata sandi

Jika nama pengguna ditemukan di database, email pemulihan dikirim ke email pengguna. Surat pemulihan akan memiliki tautan. Bagian penting tautan adalah token aman acak yang di-hash. Ini dirancang sedemikian rupa sehingga pengguna tidak akan bisa menirunya

Catatan terhadap anggota tersebut akan dilakukan di tabel tbl_password_reset dengan token aman hash yang dihasilkan. Ketika pengguna mengklik tautan dengan token, itu akan divalidasi untuk waktu kedaluwarsa

Dalam proyek contoh ini, untuk singkatnya, fungsi mail() Php digunakan. Jika mau, Anda dapat menggantinya dengan email SMTP berbasis PHPMailer

Bagaimana cara membuat lupa kata sandi di PHP dengan MySQL?

Bangun Sistem Reset Kata Sandi dengan PHP & MySQL .
Langkah 1. Buat Tabel Basis Data MySQL. .
Langkah 2. Buat Formulir Login Pengguna. .
Langkah3. Terapkan Login Pengguna. .
Langkah4. Buat Formulir Lupa Kata Sandi. .
Langkah5. Terapkan Fungsi Reset Kata Sandi. .
Langkah6. Buat Formulir Reset Kata Sandi. .
Langkah7. Simpan Kata Sandi Baru

Apa yang harus dilakukan jika saya lupa kata sandi PDO PHP saya?

Kunjungi Halaman Lupa Kata Sandi. Masukkan email akun Anda dan tekan tombol Kirim berwarna hijau. Email otomatis akan dikirim dengan instruksi dan tautan untuk mengatur ulang kata sandi Anda. Pilih Ubah kata sandi saya

Bagaimana cara mendapatkan kata sandi saya jika saya lupa?

Jika Anda lupa sandi layar kunci Android, apakah ada cara untuk membuka kunci ponsel? . factory reset your device to be able to use your phone again.

Bagaimana cara mereset kata sandi menggunakan email di PHP?

Langkah 1. Instal PHPmailer Di Proyek PHP. .
Langkah 2. Buat File PHP Koneksi Database. .
Langkah 3. Buat Formulir Lupa Kata Sandi untuk Mengirim Tautan Di Email. .
Langkah 4. Kirim Tautan dalam Email dan Simpan Token dengan file PHP waktu kedaluwarsa. .
Langkah 5. Buat Formulir Atur Ulang Kata Sandi untuk Memperbarui Kata Sandi Baru. .
Langkah 6. Perbarui File PHP Lupa Kata Sandi