如何根据月份名称生成随机密码?

How do i generate random password based on the month names?

我想根据每月的名字生成一个随机密码,函数应该从A to Z中选择alphabet并放在生成的随机密码的第5位?

问题

我有点困惑,如何在 January 的基础上选择 $alphabet 的第一个字母并放置到生成的随机密码的第 5 个位置?

例如如果当前月份是一月

如果当前月份是一月,那么函数应该从 A $alphabet 并放置到随机密码的第5位 生成?

例如如果当前月份是二月

如果当前月份是二月,那么函数应该从 B $alphabet 并放置到随机密码的第5位 生成

PHP 代码

function randomPassword() {
$currentmonth = date('F');


if($currentmonth == 'January'){
$alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ";    
$random = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
$pass = array();    

     $alphaLength = strlen($random) - 1; 
    for ($i = 0; $i < 5; $i++) {
        $n = rand(0, $alphaLength);
        $pass[] = $random[$n];
    }

   return implode($pass); 

} 
}
echo randomPassword();

要做到这一点,您需要做的就是跟踪月份并使用它来获取 $alphabet 字符串的第 n 个字符。然后,您可以在 implode() 最终密码之前用它替换 $pass 数组的第五个元素。

function randomPassword() {
    $currentmonth = date('n');
    $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ";    
    $random = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
    $pass = array();    

    $alphaLength = strlen($random) - 1; 
    for ($i = 0; $i < 5; $i++) {
          $n = rand(0, $alphaLength);
          $pass[] = $random[$n];
    }
    $pass[4] = substr($alphabet, $currentmonth - 1, 1);

    return implode($pass); 

}
echo randomPassword();

Demo

下面是生成随机密码的更简洁的方法:

function randomPassword() {
    $currentmonth = date('n') - 1;
    $alphabet = "abcdefghijklm";
    $random_hash = substr(md5(uniqid(rand(), true)), 28, 4);
    return $random_hash . substr($alphabet, $currentmonth, 1);
}
echo randomPassword();

Demo

请记住,这些密码很短且是伪随机的,不是很安全。