messagebox.showinfo('Success', 'OTP verified successfully.')
self.stop_timer = True
exit()
else:
self.wrong_attempts += 1
if self.wrong_attempts == 3:
self.lock_account()
else:
messagebox.showerror('Error', 'OTP does not match.')
定义一个方法lock_account() 。设置锁住状态为true,显示标签为“账户已锁住” 。禁用所有标签、条目和按钮 。停止现有的计时器,启动新的计时器(10分钟) 。
复制
def lock_account(self):
self.locked = True
self.label1.config(text='Account Locked')
self.mobile_number_entry.config(state=tk.DISABLED)
self.send_otp_button.config(state=tk.DISABLED)
self.timer_label.config(text='')
self.resend_otp_button.config(state=tk.DISABLED)
self.label2.config(text='')
self.otp_entry.config(state=tk.DISABLED)
self.verify_otp_button.config(state=tk.DISABLED)
self.stop_timer = True
countdown_time = 10 * 60
self.start_countdown(countdown_time)
定义一个方法start_countdown() 。如果剩余时间小于等于0,重置账户 。否则显示程序已锁住账户 , 并在剩余时间内使用回调再试一次 。
复制
def start_countdown(self, remaining_time):
if remaining_time <= 0:
self.reset_account()
return
minutes = int(remaining_time // 60)
seconds = int(remaining_time % 60)
timer_label = f'Account Locked. Try again in:
{minutes:02d}:{seconds:02d}'
self.timer_label.config(text=timer_label)
self.master.after(1000, self.start_countdown, remaining_time - 1)
定义一个函数reset_account() 。像前面一样重置所有小组件和变量的状态 。
复制
def reset_account(self):
self.locked = False
self.wrong_attempts = 0
self.label1.config(text='Enter your mobile number:')
self.mobile_number_entry.config(state=tk.NORMAL)
self.send_otp_button.config(state=tk.NORMAL)
self.timer_label.config(text='')
self.resend_otp_button.config(state=tk.DISABLED)
self.label2.config(text='Enter OTP sent to your mobile:')
self.otp_entry.config(state=tk.NORMAL)
self.verify_otp_button.config(state=tk.NORMAL)
self.stop_timer = False
创建根窗口和类的实例,并运行Tkinter应用程序 。
复制
if __name__ == '__main__':
root = tk.Tk()
otp_verification = OTPVerification(root)
root.mainloop()
使用OTP验证的输出示例
在运行OTP验证程序时 , 您会看到一个窗口 , 要求输入手机号码 。输入手机号码以及所在国家代号,然后点击“发送OTP”按钮 。您会收到一条消息,表明程序已成功发送OTP , 按钮会停用两分钟 。检查手机是否收到了OTP,并在过期前输入它 。

文章插图
在计时器过期前输入正确的OTP后 , 您将收到一条消息 , 表明程序已成功验证了OTP,退出程序 。如果您没有及时输入 , 会收到消息框,表明OTP已过期 。可以点击“重新发送OTP”按钮以生成新的OTP,并发送到您的手机 。

文章插图
如果您输错了OTP,程序将显示一个消息框 , 表明“OTP不匹配” 。

文章插图
如果OTP输错三次 , 所有字段将被禁用,账户将被锁住十分钟 。
结合使用Twilio与Python
使用Twilio , 您可以为各种事件构建短信通知系统 。您可以将其与物联网设备一起使用,当设备的数值高于或低于某个阈值或者检测到入侵者时发送短信 。您还可以构建具有双因素身份验证的安全登录系统,构建WhatsApp聊天机器人和约会提醒系统 。
除此之外,您还可以用它进行电话号码验证、营销活动、发送调查表和收集反馈 。在构建任何应用程序时,始终留意Twilio API的定价,以免遭遇意外成本 。
原文标题:How to Build an OTP Verification System Using Python , 作者:Sai Ashish Konchada
推荐阅读
- 五小步快速集成使用sentinel限流
- 使用Diagrams画架构图,你会吗?
- Python构建高效安全的OTP验证系统!
- 踩电动缝纫机教程视频 踩电动缝纫机的正确使用方法
- 千分表的使用方法及读数步骤视频 千分表的使用方法
- 束腰清洗方法 束腰带如何清洗
- 微信群怎么使用拍一拍 微信群怎么使用拍一拍功能设置
- 短视频该如何变现盈利 短视频变现的正确方法
- 翁帆被疑“间谍”,真相来了!杨振宁束手无策管不了,如何收场?
- 微信如何拉黑别人 微信如何拉黑别人教程
