Rumah >pembangunan bahagian belakang >tutorial php > 怎么生成“密码重置”那种“一次性链接”

怎么生成“密码重置”那种“一次性链接”

WBOY
WBOYasal
2016-06-13 13:21:492347semak imbas

如何生成“密码重置”那种“一次性链接”
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>
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