Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi tetapan semula kata laluan?

Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi tetapan semula kata laluan?

王林
王林asal
2023-10-31 11:53:01928semak imbas

Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi tetapan semula kata laluan?

Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi tetapan semula kata laluan?

Dalam pembangunan perisian moden, fungsi set semula kata laluan akaun pengguna telah menjadi semakin penting, kerana risiko kebocoran kata laluan akaun pengguna juga meningkat. Untuk melindungi privasi pengguna dan keselamatan data, pembangun perlu mereka bentuk struktur jadual MySQL yang selamat dan boleh dipercayai untuk melaksanakan fungsi tetapan semula kata laluan.

Berikut ialah reka bentuk struktur jadual MySQL yang boleh dilaksanakan yang boleh membantu melaksanakan fungsi tetapan semula kata laluan:

Nama jadual: password_reset

#🎜🎜 # Nama LajurJenisPenerangan#🎜 🎜#id#🎜_🎜🎜 # 🎜🎜#INT(11) Kunci asing yang dikaitkan dengan jadual penggunatokenPengecam unik untuk tetapan semula kata laluan, menggunakan rentetan yang dijana secara rawak 🎜TIME🎜🎜##🎜🎜 #🎜🎜#🎜 🎜#Langkah-langkah untuk melaksanakan fungsi tetapan semula kata laluan adalah seperti berikut: Apabila pengguna meminta penetapan semula kata laluan, jana token unik dan masukkan maklumat yang berkaitan ke dalam jadual set semula kata laluan.
INT(11) Kunci utama, penambahan sendiri
#🎜🎜(#🎜🎜 255)
masa_luputTempoh sah untuk set semula pautan kata laluan
creation_time TIMESTAMP#🎜🎜🎜 masa
Buat struktur jadual di atas.
CREATE TABLE password_reset (
  id INT(11) NOT NULL AUTO_INCREMENT,
  user_id INT(11) NOT NULL,
  token VARCHAR(255) NOT NULL,
  expiration_time TIMESTAMP NOT NULL,
  creation_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  FOREIGN KEY (user_id) REFERENCES users(id)
);
function generateToken() {
    $length = 32;
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $token = '';
    
    for ($i = 0; $i < $length; $i++) {
        $token .= $characters[rand(0, strlen($characters) - 1)];
    }
    
    return $token;
}

$userId = 123; // 用户的ID
$expirationTime = date('Y-m-d H:i:s', strtotime('+1 day')); // 链接的有效期为一天
$token = generateToken();

$query = "INSERT INTO password_reset (user_id, token, expiration_time) VALUES ($userId, '$token', '$expirationTime')";

// 执行SQL插入操作

Token yang dijana dihantar kepada pengguna, dan pengguna menetapkan semula kata laluan mereka dengan mengklik pada pautan yang mengandungi token.
  1. Apabila pengguna mengklik pautan, semak sama ada token dalam pautan itu wujud dan sah dalam jadual password_reset.
$token = $_GET['token']; // 从URL参数中获取token

$query = "SELECT * FROM password_reset WHERE token = '$token' AND expiration_time >= NOW()";
// 执行SQL查询操作
  1. Jika token itu sah, borang tetapan semula kata laluan dipaparkan kepada pengguna, dan pengguna memasukkan kata laluan baharu dan menyerahkan borang.
Kemas kini kata laluan pengguna dalam jadual pengguna selepas borang tetapan semula kata laluan diserahkan.
  1. $newPassword = $_POST['new_password']; // 从表单中获取新密码
    $hashedPassword = password_hash($newPassword, PASSWORD_DEFAULT); // 新密码进行哈希处理
    
    $query = "UPDATE users SET password = '$hashedPassword' WHERE id = $userId";
    // 执行SQL更新操作
  2. Pada masa ini, padamkan data pengguna yang berkaitan dalam jadual password_reset.
$query = "DELETE FROM password_reset WHERE user_id = $userId";
// 执行SQL删除操作
    Melalui langkah reka bentuk struktur jadual MySQL dan contoh kod di atas, fungsi tetapan semula kata laluan yang selamat boleh dilaksanakan, yang menyediakan perlindungan untuk keselamatan kata laluan akaun pengguna. Sudah tentu, keselamatan adalah proses yang berterusan, dan pembangun juga harus mempertimbangkan perlindungan keselamatan lain, seperti pengesahan input yang betul, penggunaan HTTPS, dsb.

Atas ialah kandungan terperinci Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi tetapan semula kata laluan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn