2010-12-31 3 views
2

Я знаю, это может показаться глупым, но я хочу создать случайный код из 8 символов, только числа или буквы, используя php. я это нужно, чтобы создать пароль для каждого пользователя, подписавшегося, благодарягенерирование случайного кода в php?

+6

Вы гугле "PHP случайный генератор паролей" - есть много хитов ... – atk

ответ

13

Я предпочел бы использовать md5 для генерации паролей

Но вы можете использовать что-то вроде этого, если вы хотите обычай:

function createRandomPassword() { 

    $chars = "abcdefghijkmnopqrstuvwxyz023456789"; 
    srand((double)microtime()*1000000); 
    $i = 0; 
    $pass = '' ; 

    while ($i <= 7) { 
     $num = rand() % 33; 
     $tmp = substr($chars, $num, 1); 
     $pass = $pass . $tmp; 
     $i++; 
    } 

    return $pass; 

} 
+0

thasnks: :)) он работает – getaway

+1

с помощью ' md5() 'idea, вы можете взять' $ pass', вы возвращаетесь сейчас, а вместо этого возвращаете substr (md5 ($ pass), 0, 8); ' – Patrick

+0

Хорошо, если это было то, что вы хотели, пожалуйста, установите его как ответил :) – sv88erik

1

Используйте base64_encode(), отправьте ему несколько цифр rand() и отрежьте первые 8 символов, которые определенно являются буквами или цифрами. Это не вполне случайная комбинация из-за того, что входные данные являются целыми числами. Но он достаточно хорош для пользовательских паролей по умолчанию. (Else использовать rand() через chr() перед кодированием.)

2
<?php 

$uniqid = uniqid(); 

$rand_start = rand(1,5); 

$rand_8_char = substr($uniqid,$rand_start,8); 

?> 
+0

вы можете захотеть солить время, в противном случае хакер мог бы принять преимущество. это длинный выстрел, но все же возможно. – Patrick

+0

Я думаю, что «длинный выстрел» - это преуменьшение. ;) – jondavidjohn

+0

все еще, у всех хакеров есть, есть время :-) – Patrick

1

PHP имеет rand функцию

Так что-то вроде этого (а также mt_rand функции, которые утверждают, что документы быстрее.):

$i = 0; 
$pwd = ""; 
while ($i < 10) { 
    if (mt_rand() % 2 == 0) { 
     $pwd .= rand(); 
    } else { 
     $pwd .= char(rand()); 
     // http://php.net/manual/en/function.chr.php 
    } 
    $i += 1; 
} 
+0

, другой вариант заключается в том, чтобы использовать 'rand()' только один раз, установив допустимое число min & max, т. Е. '$ Pwd = rand (10000000, 99999999);' – Patrick

+0

@Patrick - - хорошая мысль! Если скорость является проблемой, вы можете заменить внутренние случайные вызовы на конкатенацию строк или вызов char. –

6

Что о чем-то вроде этого, для удобства:

$pass = substr(md5(uniqid(mt_rand(), true)) , 0, 8); 
+0

приятный! Благодарю. – Hiram

0

Вы можете использовать это,

function rand_code($len) 
{ 
$min_lenght= 0; 
$max_lenght = 100; 
$bigL = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
$smallL = "abcdefghijklmnopqrstuvwxyz"; 
$number = ""; 
$bigB = str_shuffle($bigL); 
$smallS = str_shuffle($smallL); 
$numberS = str_shuffle($number); 
$subA = substr($bigB,0,5); 
$subB = substr($bigB,6,5); 
$subC = substr($bigB,10,5); 
$subD = substr($smallS,0,5); 
$subE = substr($smallS,6,5); 
$subF = substr($smallS,10,5); 
$subG = substr($numberS,0,5); 
$subH = substr($numberS,6,5); 
$subI = substr($numberS,10,5); 
$RandCode1 = str_shuffle($subA.$subD.$subB.$subF.$subC.$subE); 
$RandCode2 = str_shuffle($RandCode1); 
$RandCode = $RandCode1.$RandCode2; 
if ($len>$min_lenght && $len<$max_lenght) 
{ 
$CodeEX = substr($RandCode,0,$len); 
} 
else 
{ 
$CodeEX = $RandCode; 
} 
return $CodeEX; 
} 

Подробности Random code generator in PHP

Смежные вопросы