怎么生成“密码重置”那种“一次性链接”
如何生成“密码重置”那种“一次性链接”
RT.
就像一些网站用来给忘记密码的用户,提供的密码重置的链接。
发到用户注册邮箱里的那种,只能触发一次,用过一次以后就不能用了。
有时候还有时间限制,比如24小时内链接有效之类的。
谁知道 这个用 PHP 如何实现呢。
谢谢啦
------解决方案--------------------
时间轴控制。先生成连接,记录生成时间,然后设置死亡时间。超过24小时或者点击过一次后就over
------解决方案--------------------
根据时间戳什么的生成可逆加密串 取得后再进行还原验证 验证时间是否超时就可以了.
------解决方案--------------------
要实现一次性的话那就得把加密串记录下来了,每次收到连接请求 到记录里面查询一下
------解决方案--------------------
“一次性”???
很简单,你只需查询一下表,在表中就通过,否则就拒绝
表中只需一个字段 char(32) 设为主键
只存放需要验证内容的 MD5 值
操作也很简单,执行 delete from tbl_name where key='值'
如果 mysql_affected_rows 返回 0 就表示未通过
这个方案可以验证任何“一次性”,只要你取得要验证对象的MD5。无需顾忌验证对象的真实内容
------解决方案--------------------
扯淡.
点重置密码,你就给数据库插一行,有自增ID做KEY,并且有用户名,是否完成验证,创建日期TIME_STAMP,唯一标示符md5. (为了数据库安全性,生成一个MD5值作标识发给用户,md5(id . username . time))。
然后发个URL在邮件里:xxxx.com?id=md5即可。
用户访问这个url的时候从数据库里找该md5,标记完成即可。
------解决方案--------------------
=。= 还用表? 这种数据记录下来貌似是给dba找麻烦呀...
随便用 username + unixtimestamp + 一段key 然后对某几位进行一下哈希不就行了?....
验证超时的时候,提取出unixtimestamp字段,就可以随意做时间限制了...
------解决方案--------------------
我说说我的思路。其实很简单
因为SESSION是有生命期的,SESSION过期同时链接自动过期即可。
思路:
确定用户身份后。利用session ID+用户名 生成一个唯一的标识
- PHP code
$_SESSION['FORGET_CODE']=md5(session_id() . 'XXX'); //XXX是要重置密码的用户名 /*生成的链接如下*/ $href="http://www.domain.com/forget.php?code={$_SESSION['FORGET_CODE']}"; <br><font color="#e78608">------解决方案--------------------</font><br>1,可以把用户的申请时间记录到数据库中<br>2,使用能解密的算法,把时间也做为数据加密,discuz有这种方法。 <div class="clear"> </div>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

问题发现springboot项目生产session-out超时问题,描述下问题:在测试环境通过改动application.yaml配置session-out,经过设置不同时间验证session-out配置生效,于是就直接设置了过期时间为8小时发布到了生产环境。然而中午接到客户反应项目过期时间设置较短,半小时不操作就会话过期需要反复登陆。解决处理开发环境:springboot项目内置Tomcat,所以项目中application.yaml配置session-out是生效的。生产环境:生产环境发布是

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

php session刷新后没有了的解决办法:1、通过“session_start();”开启session;2、把所有的公共配置写在一个php文件内;3、变量名不能和数组下标相同;4、在phpinfo里面查看session数据的存储路径,并查看该文件目录下的sessio是否保存成功即可。

PHPSession跨域问题的解决方法在前后端分离的开发中,跨域请求已成为常态。在处理跨域问题时,我们通常会涉及到session的使用和管理。然而,由于浏览器的同源策略限制,跨域情况下默认情况下无法共享session。为了解决这个问题,我们需要采用一些技巧和方法来实现session的跨域共享。一、使用cookie跨域共享session最常

什么是MD5?MD5信息摘要算法(英语:MD5Message-DigestAgorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hashvalue),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(RonaldLinnRivest))设计,于1992年公开,用以取代MD4算法。这套算法的程序在RFC1321标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他

session php默认失效时间是1440秒,也就是24分钟,表示客户端超过24分钟没有刷新,当前session就会失效;如果用户关闭了浏览器,会话就会结束,Session就不存在了。

1.基于session实现短信登录1.1短信登录流程图1.2实现发送短信验证码前端请求说明:说明请求方式POST请求路径/user/code请求参数phone(电话号码)返回值无后端接口实现:@Slf4j@ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1.校验手机号if

问题:今天项目中遇到了一个设置时间超时的问题,按SpringBoot2的application.properties更改一直不生效。解决方案:server.*属性用于控制SpringBoot使用的嵌入式容器。SpringBoot将使用ServletWebServerFactory实例之一创建servlet容器的实例。这些类使用server.*属性来配置受控的servlet容器(tomcat,jetty等)。当应用程序作为war文件部署到Tomcat实例时,server.*属性不适用。它们不适用,
