Loading...
Обучение/Помощь новичкам | генерация токена
подскажите пожалуйста, как генерировать токен так, что бы он не повторялся?

То есть допустим я с генерировал токен:

$token = round(1,99999999999999999999);

print $token;


Но ведь рандом имеет шанс повторения такого же значения, которое сгенерировал не давно.. Как исключить этот шанс?
________
посл. ред. 09.09.2017 в 01:28; всего 1 раз(а); by Hooligan
Hooligan , $token = round(1,99999999999999999999) . time();
Avenax (09.09.2017 в 01:33)
Hooligan , $token = round(1,99999999999999999999) . time();

Он точно не повторится?
Hooligan (09.09.2017 в 01:36)
Он точно не повторится?

ну если время на земле не остановится
Hooligan , $token = base64_encode(openssl_random_pseudo_bytes(32));

на такой
Avenax (09.09.2017 в 01:40)
Hooligan , $token = base64_encode(openssl_random_pseudo_bytes(32));

на такой

Воо, это то что нужно, пасибо)
Avenax , я как раз base64 и искал, где то увидел, а где не запомнил, вот и думал как же мля сделать то)))
Кароче не работает openssl_random_pseudo_bytes() https://habrahabr.ru/post/277779/

По этому нашел другой вариант, малоли кому пригодиться..


<?
//функция генерирует случайное значение (не повторяется)
function random_string($length) {
$key = '';
$keys = array_merge(range(0, 9), range('a', 'z'));

for ($i = 0; $i < $length; $i++) {
$key .= $keys[array_rand($keys)];
}

return $key;
}

// использовать так, 50 - это длинна уникального ключа, можно менять хоть на 10, хоть на 100..

$token = random_string(50);
echo $token;
// или так, кому что именно нужно)
echo random_string(50);

?>
Онлайн: 0
Время:
Gen. 0.1295
(c) Bym.Guru 2010-2026