忽然忘记 又再想起

二个月前熟烂于胸的BLOG密码突然就忘记了 任我怎么想也想不起

因为是太熟悉了 反而忘了记不起来

不用脑子想反而可以输出来 看来我是玩完了

# 忘记密码网页及修改密码功能实现 下面是一个完整的忘记密码和修改密码的网页实现,包含HTML、CSS和JavaScript代码: ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>密码重置</title> <style> body { font-family: 'Arial', sans-serif; background-color: #f5f5f5; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; } .container { background-color: white; padding: 30px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); width: 100%; max-width: 400px; } h1 { text-align: center; color: #333; margin-bottom: 24px; } .form-group { margin-bottom: 20px; } label { display: block; margin-bottom: 8px; font-weight: bold; } input { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; box-sizing: border-box; } button { width: 100%; padding: 12px; background-color: #4CAF50; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; } button:hover { background-color: #45a049; } button:disabled { background-color: #cccccc; cursor: not-allowed; } .toggle-form { text-align: center; margin-top: 15px; } .toggle-form a { color: #4CAF50; text-decoration: none; cursor: pointer; } .error { color: red; font-size: 14px; margin-top: 5px; } .success { color: green; font-size: 14px; margin-top: 5px; } .hidden { display: none; } </style> </head> <body> <div class="container"> <!-- 忘记密码表单 --> <div id="forgot-password-form"> <h1>忘记密码</h1> <div class="form-group"> <label for="email">注册邮箱</label> <input type="email" id="email" placeholder="请输入您的注册邮箱"> <div id="email-error" class="error"></div> </div> <button id="send-code-btn">发送验证码</button> <div class="toggle-form"> 想起密码了?<a id="show-login">返回登录</a> </div> </div> <!-- 验证码验证表单 --> <div id="verify-code-form" class="hidden"> <h1>验证身份</h1> <div class="form-group"> <label for="verification-code">验证码</label> <input type="text" id="verification-code" placeholder="请输入您收到的验证码"> <div id="code-error" class="error"></div> </div> <button id="verify-code-btn">验证</button> <div class="toggle-form"> <a id="back-to-email">返回上一步</a> </div> </div> <!-- 重置密码表单 --> <div id="reset-password-form" class="hidden"> <h1>重置密码</h1> <div class="form-group"> <label for="new-password">新密码</label> <input type="password" id="new-password" placeholder="请输入新密码"> <div id="password-error" class="error"></div> </div> <div class="form-group"> <label for="confirm-password">确认新密码</label> <input type="password" id="confirm-password" placeholder="请再次输入新密码"> <div id="confirm-error" class="error"></div> </div> <button id="reset-password-btn">重置密码</button> </div> <!-- 重置成功提示 --> <div id="success-message" class="hidden"> <h1>密码重置成功</h1> <p class="success">您的密码已成功重置,请使用新密码登录。</p> <button id="return-to-login">返回登录</button> </div> </div> <script> // 获取DOM元素 const forgotPasswordForm = document.getElementById('forgot-password-form'); const verifyCodeForm = document.getElementById('verify-code-form'); const resetPasswordForm = document.getElementById('reset-password-form'); const successMessage = document.getElementById('success-message'); const emailInput = document.getElementById('email'); const emailError = document.getElementById('email-error'); const sendCodeBtn = document.getElementById('send-code-btn'); const verificationCodeInput = document.getElementById('verification-code'); const codeError = document.getElementById('code-error'); const verifyCodeBtn = document.getElementById('verify-code-btn'); const newPasswordInput = document.getElementById('new-password'); const confirmPasswordInput = document.getElementById('confirm-password'); const passwordError = document.getElementById('password-error'); const confirmError = document.getElementById('confirm-error'); const resetPasswordBtn = document.getElementById('reset-password-btn'); const returnToLoginBtn = document.getElementById('return-to-login'); const showLoginLink = document.getElementById('show-login'); const backToEmailLink = document.getElementById('back-to-email'); // 模拟存储的验证码(实际应用中应该由服务器生成和验证) let storedVerificationCode = ''; // 验证邮箱格式 function validateEmail(email) { const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return re.test(email); } // 发送验证码 sendCodeBtn.addEventListener('click', function() { const email = emailInput.value.trim(); emailError.textContent = ''; if (!email) { emailError.textContent = '请输入邮箱地址'; return; } if (!validateEmail(email)) { emailError.textContent = '请输入有效的邮箱地址'; return; } // 模拟发送验证码到邮箱(实际应用中应该调用后端API) storedVerificationCode = Math.floor(100000 + Math.random() * 900000).toString(); console.log('验证码已发送(模拟):', storedVerificationCode); // 仅用于测试 alert(`验证码已发送到 ${email}(模拟)`); // 切换到验证码验证表单 forgotPasswordForm.classList.add('hidden'); verifyCodeForm.classList.remove('hidden'); }); // 验证验证码 verifyCodeBtn.addEventListener('click', function() { const code = verificationCodeInput.value.trim(); codeError.textContent = ''; if (!code) { codeError.textContent = '请输入验证码'; return; } if (code !== storedVerificationCode) { codeError.textContent = '验证码不正确'; return; } // 验证码正确,切换到重置密码表单 verifyCodeForm.classList.add('hidden'); resetPasswordForm.classList.remove('hidden'); }); // 验证密码格式 function validatePassword(password) { // 密码至少8位,包含大小字母和数字 const re = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/; return re.test(password); } // 重置密码 resetPasswordBtn.addEventListener('click', function() { const newPassword = newPasswordInput.value; const confirmPassword = confirmPasswordInput.value; passwordError.textContent = ''; confirmError.textContent = ''; if (!newPassword) { passwordError.textContent = '请输入新密码'; return; } if (!validatePassword(newPassword)) { passwordError.textContent = '密码必须至少8位,包含大小字母和数字'; return; } if (!confirmPassword) { confirmError.textContent = '请确认新密码'; return; } if (newPassword !== confirmPassword) { confirmError.textContent = '两次输入的密码不一致'; return; } // 密码重置成功(实际应用中应该调用后端API保存新密码) console.log('密码已重置(模拟)'); // 显示成功消息 resetPasswordForm.classList.add('hidden'); successMessage.classList.remove('hidden'); }); // 返回登录 returnToLoginBtn.addEventListener('click', function() { // 在实际应用中,这里应该跳转到登录页面 alert('返回登录页面(模拟)'); }); showLoginLink.addEventListener('click', function() { // 在实际应用中,这里应该跳转到登录页面 alert('返回登录页面(模拟)'); }); backToEmailLink.addEventListener('click', function() { // 返回上一步 verifyCodeForm.classList.add('hidden'); forgotPasswordForm.classList.remove('hidden'); }); </script> </body> </html> ``` ## 功能说明 这个实现包含以下功能: 1. **忘记密码表单**: - 用户输入注册邮箱 - 验证邮箱格式 - 发送验证码(模拟) 2. **验证码验证表单**: - 用户输入收到的验证码 - 验证验证码是否正确 3. **重置密码表单**: - 用户输入新密码和确认密码 - 验证密码格式(至少8位,包含大小字母和数字) - 验证两次输入的密码是否一致 4. **成功提示**: - 显示密码重置成功消息 - 提供返回登录的选项 ## 安全注意事项 1. 实际应用中,验证码应该由服务器生成并通过真实邮件发送 2. 密码重置操作应该在后端完成,前端只负责收集和验证输入 3. 应该使用HTTPS协议保护数据传输安全 4. 验证码应该有有效期限制 5. 密码重置链接应该是一次性的 ## 改进建议 1. 添加密码强度指示器 2. 实现验证码倒计时功能,防止频繁发送 3. 添加图形验证码或短信验证码选项 4. 实现后端API集成 5. 添加多语言支持
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值