def post(self): username = self.get_argument('username', '') password = self.get_argument('password', '') repassword = self.get_argument('repassword', '') email = self.get_argument('email', '') error_msg = list() if '' == username: error_msg.append("请输入用户名") if '' == password: error_msg.append("请输入密码") if '' == repassword: error_msg.append("请确认密码") if '' == email: error_msg.append("请输入邮箱地址") if password != repassword: error_msg.append("两次输入的密码不一直,请重新输入") if error_msg: self.render('member/register.html', msg=error_msg) return authcode = common.randString(64, True) pwd_md5 = self.md5 pwd_md5.update(password) pwd_md5.update(authcode) password = pwd_md5.hexdigest() isexists = self.db.User.select(self.db.User.id).where( (self.db.User.name == username) | (self.db.User.mail == email) ).count() if isexists > 0: error_msg = list() error_msg.append('您输入的用户名或密码已经被注册了,请重新填写。') self.render('member/register.html', msg=error_msg) return self.db.User.create( name=username, password=password, mail=email, created=int(time.time()), authCode=authcode ) self.render('member/register_success.html', email=email)
def post(self): email = self.get_argument('email', '') error_msg = list() if '' == email: error_msg.append("请输入邮箱地址") if error_msg: self.render('member/forget_pwd.html', msg=error_msg) return result = self.db.User.select().where(self.db.User.mail == email).count() if result: # 计算验证码 code = common.randString(8) stime = str(int(time.time())) remoteip = self.request.remote_ip authstr = '{0}:{1}:{2}'.format(stime, remoteip, code) user = self.db.User.get(mail=email) user.authStr = authstr user.save() print user.authStr site_url = 'http://{0}'.format(self.request.host) reset_url = site_url + '/resetPwd/{0}/{1}'.format(user.id, code) appname = self.db.Options.get(name='appName').value # 发送邮件 mail_body = """ 取回密码说明<br/> <p>kimdash, 这封信是由 {0} 发送的。</p> <p>您收到这封邮件,是由于这个邮箱地址在 {0} 被登记为用户邮箱, 且该用户请求使用 Email 密码重置功能所致。</p> ---------------------------------------------------------------------- <p><strong>重要!</strong></p> ---------------------------------------------------------------------- <p>如果您没有提交密码重置的请求或不是 {0} 的注册用户,请立即忽略 并删除这封邮件。只有在您确认需要重置密码的情况下,才需要继续阅读下面的内容。</p> ---------------------------------------------------------------------- <p><strong>密码重置说明</strong></p> ---------------------------------------------------------------------- <p>您只需在提交请求后的三天内,通过点击下面的链接重置您的密码:</p> {1}<br/> (如果上面不是链接形式,请将该地址手工粘贴到浏览器地址栏再访问)<br/> <p>在上面的链接所打开的页面中输入新的密码后提交,您即可使用新的密码登录网站了。您可以在用户控制面板中随时修改您的密码。</p> <p>本请求提交者的 IP 为 {2}</p> 此致<br/> {0} 管理团队. {3} """ mail_body = mail_body.format(appname, reset_url, remoteip, site_url) config = open('config.json', 'r').read() config = json.loads(config) smtp_config = config['smtp'] mail = EmailBase(**smtp_config) mail.send(user.mail, '[{0}]取回密码说明'.format(appname), mail_body, mail_type='html') self.render('member/find_pwd.html', email=email) else: error_msg = list() error_msg.append('您输入的邮箱地址并没有在本站注册过噢。请确认输入是否有误。') self.render('member/forget_pwd.html', msg=error_msg) return