PHP系统验证令牌是什么意思,关于php:如何生成令牌以通过URL验证帐户?

在我的系统中,任何用户都不允许注册。必须通过电子邮件邀请他们。

我需要验证用户是否在系统上处于活动状态。为此,用户将收到一封电子邮件,其中包含验证您帐户的特定URL。

此URL(路由)可能包含用户标识和在"预注册"后保存在数据库中的验证代码。

hostname/accountConfirm?user=token&cod=userCodeSavedOnTheDatabase

令牌必须从用户电子邮件生成。

如何生成令牌并检查它以识别用户?

你有没有用谷歌搜索你的问题…?stackoverflow.com/a/18910943/2518525

我建议使用类似的方法来生成代码

$code = bin2hex(openssl_random_pseudo_bytes(40));

将它与识别用户可能需要的任何其他信息存储在数据库中。在注册过程中验证代码,然后将其删除或以某种方式使其无效(例如设置"已使用"标志)

生成这样的随机字符串,并使用用户电子邮件作为密码,这是一个选项,或者使用任何内置的PHP函数来生成令牌。

$pool ='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

$token= '';

for ($i = 0; $i < 8; $i++){

$token.= substr($pool, mt_rand(0, strlen($pool) -1), 1);

}

$cipher = new McryptCipher($user_email);

$encrypted_token= $cipher ->encrypt($token);

就验证而言,您可以选择将令牌和一些用户数据保存到表中,或者向令牌添加过期时间,并清除函数以删除过期的注册和垃圾邮件注册。另一种选择是将临时注册保存到文件中。

$epxire_time = timestamp() + 1800; // 30 min

$pending_registration = json_encode['token' => $encrypted_token, 'user' => $user_email,'epxire' => $epire_time];

file_put_contents($path/to/file/,$pending_registrations);

向用户发送电子邮件确认,并提供验证链接。验证过程中,您通常会从URL检索参数;

$token = $_GET['token'];

// additional param

// decrypt the token

$token = $cipher->decrypt($token );

$file = file_get_contents($path/to/file);

和验证令牌,验证令牌过期,用户电子邮件,就像你通常做的那样……

if($valid_token){

// save user, redirect to login

}else{

// return response invalid token

return json_encode['statusCode' => 400, 'errorMessage' => 'Invalid ...','urltorequestnewotken' => 'http://...'];

}

将挂起的注册保存到一个临时文件中,这只是另一种减少垃圾邮件和僵尸程序干扰数据库的方法,就像使用验证码一样。希望能帮上忙。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值