2016-05-02 6 views
-4

Как генерировать случайный код активации на основе текущего времени и имени пользователя в PHP.Генерировать случайный код активации в PHP

Возвращаемое значение должно быть, как это, например:

201605021955Username

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

.... 

return activationCode; 
} 
+0

Вы можете написать свою собственную функцию с помощью [ 'uniqid'] (http://php.net/manual/en/function.uniqid.php) или, если вам нужна безопасность с криптографической функции. – Anton

+1

В вашем примере вы, кажется, используете время datetime (как вы просили), но не каким-либо случайным образом. 201605021955 - Я предполагаю, что это 05, 02, 2016 19:55:00 (или, как вы выразились, 2016, 05, 02 19:55)? Как точно это * random *? Являются ли ваши требования не случайным числом, а скорее ** точной меткой времени **? –

+0

@NateI Я думаю, что он хочет уникальный код, а не случайный, возможно –

ответ

0

Что вы просите не случайно, но:

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

Также проверьте chr функцию получить символ из случайного числа (которое вы можете получить от mt_rand).

+1

Что делать, если есть 2x «Джон»? Это приведет к той же строке в пределах одного и того же «возможного» (минутного) таймфрейма, если будет одно и то же имя пользователя. –

+0

Да, он должен использовать «rand» или «mt_rand», чтобы добавить случайные числа в строку, чтобы избежать столкновения, поэтому я рекомендую проверить возможность. –

+0

Какой смысл использовать такой очень предсказуемый код активации. Это слишком уязвимо. – rineez

1
function getActivationCode($username){ 
    $activationCode =date('YmdHi').$username; 
    return activationCode; 
}