最基本的忘记密码用php怎么做,php – 三步而非四步忘记密码功能

首先创建一个函数为你生成一个随机字符串,假设你需要创建一个包含32个字符的随机字符串,选择你想要的任意数量的字符

用于生成随机代码的函数,该代码将通过电子邮件发送并添加到db

function genRandomString() {

$length = 32;

$characters = "0123456789abcdefghijklmnopqrstuvwxyz";

$string ="";

for ($p = 0; $p < $length; $p++) {

$string .= $characters[mt_rand(0, (strlen($characters))-1)];

}

return $string;

}

接下来,使用php myAdmin创建一个新表,一个表名为forgotten_passes,其中包含三列,假设您已经这样做了

$key = genRandomString(); // assign random code

$assign = $db->query("INSERT INTO `YOUR_DB_NAME`.`forgotten_pass` (`email` ,`randomKey` , `time`)

VALUES ('$email', '$key', CURRENT_TIMESTAMP );");

接下来发送一封电子邮件,其中包含指向resetpassword.php页面的链接(用户要求选择新密码并确认它的页面,但不要忘记将生成的密钥分配给get变量,这很容易,就在你的链接

www.yourdomain.com/pass_reset.php(ADD?secretkey = THE_GENERATED_HERE)

因此,发送到需要重置密码的人的电子邮件地址的链接应包含以下内容:

您好用户名,要重置您的密码,请单击下面的链接或将其复制/通过您的浏览器

当用户点击链接时,他会进入一个页面,在sql数据库中验证他的电子邮件及其相应的随机密钥,如果发现真的有电子邮件和那个随机的kay,那么用户确实已经确认了它的电子邮件,所以此页面应包含以下内容:

if (isset($_GET['secretKey'])) {

$secretKey = $_GET['secretKey'];

// Check wether it really exist in database

$sql = 'select * from forgotten_pass WHERE email=$The_User_Email and randomKey='$secretKey'';

}

现在,只计算行数以查看是否有返回的数据,如果返回的数据比用户真正连接到其收件箱并单击该链接.

只需执行以下操作:

if mysql_num_rows($sql)>0 { echo "Success, ";

?>

// in this part type the html code which displays two inputs text, password

// and confirm password that connect to database and update the user's password

} else {

echo "Sorry, invalid reset link";

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值