【问题标题】:Generate random activation code in PHP [closed]在 PHP 中生成随机激活码 [关闭]
【发布时间】:2016-08-27 14:04:00
【问题描述】:

如何在 PHP 中根据当前日期时间和用户名生成随机激活码。

返回值应该是这样的,即:

201605021955用户名

function getActivationCode($username){
$activationCode = "";        

 ....

return activationCode;
}

【问题讨论】:

  • 您可以使用uniqid 编写自己的函数,或者如果您需要加密函数的安全性。
  • 在您的示例中,您似乎正在使用日期时间(如您所要求的那样),但不是以任何随机方式。 201605021955 - 我假设那是 2016 年 5 月 2 日 19:55:00(或者你说的 2016 年 5 月 2 日 19:55)? random 到底有多准确?您的要求不是针对随机数,而是针对精确的时间戳
  • @NateI 我想他可能想要一个唯一的代码而不是随机的代码
  • 是的,我的错,用户名后面应该有随机的 3 位数字
  • @Fale1994 sprintf("%03d",rand(0,1000)); 会给你三个随机数字。

标签: php random activation-codes


【解决方案1】:
function getActivationCode($username){
    $activationCode =date('YmdHi').$username;  
    return activationCode;
}

【讨论】:

    【解决方案2】:

    你要求的不是随机的,而是:

    $string = date('YmdHi') . $username;
    

    还可以查看chr 函数以从随机数中获取字符(您可以从mt_rand 中获取)。

    【讨论】:

    • 如果有 2 个“John”怎么办?如果用户名相同,这将在相同的“可能”(分钟)时间范围内产生相同的字符串。
    • 是的,他应该使用randmt_rand 在字符串中添加随机数以避免冲突,这就是为什么我建议检查这种可能性。
    • 使用这种高度可预测的激活码有什么意义。这太脆弱了。
    • 这确实是用户要求的,我在一年前的答案和评论中已经提到最好添加一个随机字符串。
    猜你喜欢
    • 2013-05-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2013-04-24
    • 1970-01-01
    相关资源
    最近更新 更多