本文目錄一覽:
php怎樣生成一個32位的隨機字符串?
如用戶註冊生成隨機密碼,用戶重置密碼也需要生成一個隨機的密碼。隨機密碼也就是一串固定長度的字符串。下面介紹生成隨機字符串的三種基本方法:
方法一
1、在33 – 126中生成一個隨機整數,如35。
2、將35轉換成對應的ASCII碼字符,如35對應#。
3、重複以上1、2步驟n次,連接成n位的密碼。
該算法主要用到了兩個函數,mt_rand ( int $min , int $max )函數用於生成隨機整數,其中 $min – $max 為 ASCII 碼的範圍,這裡取 33 -126 ,可以根據需要調整範圍,如ASCII碼錶中 97 – 122 位對應 a – z 的英文字母,具體可參考 ASCII碼錶; chr ( int $ascii )函數用於將對應整數 $ascii 轉換成對應的字符。
function create_password($pw_length =
{
$randpwd = ”;
for ($i = 0; $i $pw_length; $i++)
{
$randpwd .= chr(mt_rand(33, 126));
}
return $randpwd;
}
// 調用該函數,傳遞長度參數$pw_length = 6
echo create_password(6);
方法二
1、預置一個的字符串 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符。
2、在 $chars 字符串中隨機取一個字符。
3、重複第二步n次,可得長度為n的密碼。
function generate_password( $length = 8 ) {
// 密碼字符集,可任意添加你需要的字符
$chars = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^*()-_ []{}~`+=,.;:/?|’;
$password = ”;
for ( $i = 0; $i $length; $i++ )
{
// 這裡提供兩種字符獲取方式
// 第一種是使用 substr 截取$chars中的任意一位字符;
// 第二種是取字符數組 $chars 的任意元素
// $password .= substr($chars, mt_rand(0, strlen($chars) – 1), 1);
$password .= $chars[ mt_rand(0, strlen($chars) – 1) ];
}
return $password;
}
方法三
1、預置一個的字符數組 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符。
2、通過array_rand()從數組$chars中隨機選出$length個元素。
3、根據已獲取的鍵名數組 $keys,從數組$chars取出字符拼接字符串。該方法的缺點是相同的字符不會重複取。
function make_password( $length = 8 )
{
// 密碼字符集,可任意添加你需要的字符
$chars = array(‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’,
‘i’, ‘j’, ‘k’, ‘l’,’m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’,
‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’,’z’, ‘A’, ‘B’, ‘C’, ‘D’,
‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’,’M’, ‘N’, ‘O’,
‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’,’Z’,
‘0′, ‘1′, ‘2′, ‘3′, ‘4′, ‘5′, ‘6′, ‘7′, ‘8′, ‘9′, ‘!’,
‘@’,’#’, ‘$’, ‘%’, ‘^’, ‘’, ‘*’, ‘(‘, ‘)’, ‘-‘, ‘_’,
‘[‘, ‘]‘, ‘{‘, ‘}’, ‘’, ‘’, ‘~’, ‘`’, ‘+’, ‘=’, ‘,’,
‘.’, ‘;’, ‘:’, ‘/’, ‘?’, ‘|’);
// 在 $chars 中隨機取 $length 個數組元素鍵名
$keys = ($chars, $length);
$password = ”;
for($i = 0; $i $length; $i++)
{
// 將 $length 個數組元素連接成字符串
$password .= $chars[$keys[$i]];
}
return $password;
}
php 隨機生成不重複用戶ID
php可以使用uniqid函數生成唯一的ID
uniqid — 生成一個唯一ID
string uniqid([ string $prefix = “”[, bool $more_entropy = false]])
獲取一個帶前綴、基於當前時間微秒數的唯一ID。
參數說明:
prefix:有用的參數。例如:如果在多台主機上可能在同一微秒生成唯一ID。
prefix為空,則返回的字符串長度為13。more_entropy 為 TRUE,則返回的字符串長度為23。
more_entropy:如果設置為 TRUE,uniqid() 會在返回的字符串結尾增加額外的煽(使用combined linear congruential generator)。使得唯一ID更具唯一性。
返回值:
返回字符串形式的唯一ID。
PHP產生不重複隨機數的5個方法總結
無論是Web應用,還是WAP或者移動應用,隨機數都有其用武之地。在最近接觸的幾個小項目中,我也經常需要和隨機數或者隨機數組打交道,所以,對於PHP如何產生不重複隨機數常用的幾種方法小結一下(ps:方法1、4、5是我常用的,其餘來自網絡整理)
方法一:
複製代碼
代碼如下:
?php
$numbers
=
range
(1,50);
//shuffle
將數組順序隨即打亂
shuffle
($numbers);
//array_slice
取該數組中的某一段
$num=6;
$result
=
array_slice($numbers,0,$num);
print_r($result);
?
方法二:
複製代碼
代碼如下:
?php
$numbers
=
range
(1,20);
//播下隨機數發生器種子,可有可無,測試後對結果沒有影響
srand
((float)microtime()*1000000);
shuffle
($numbers);
//跳過list第一個值(保存的是索引)
while
(list(,
$number)
=
each
($numbers))
{
echo
“$number
“;
}
?
方法三:
複製代碼
代碼如下:
?php
function
NoRand($begin=0,$end=20,$limit=5){
$rand_array=range($begin,$end);
shuffle($rand_array);//調用現成的數組隨機排列函數
return
array_slice($rand_array,0,$limit);//截取前$limit個
}
print_r(NoRand());
?
上述可以在1-20間隨機產生5個不重複的值
方法四:
複製代碼
代碼如下:
?php
$tmp=array();
while(count($tmp)5){
$tmp[]=mt_rand(1,20);
$tmp=array_unique($tmp);
}
print_r($tmp);
?
方法五:
複製代碼
代碼如下:
?php
$tmp
=
range(1,30);
print_r(array_rand($tmp,10));
?
這個可能是比叫簡單的了(ps:如果在range中指定了步長,就必須注意array_rand的第二個參數是否超出$tmp的長度)。
PHP提供非常豐富的數組函數,產生隨機數大多可以從數組這個角度出發,若你還有方法提供,歡迎給出,文章將持續更新。
php怎麼生成6位的不重複的字符串
php生成6位不重複的字符串,用到的工具:notepad++,步驟如下:
php代碼部分:
?php
echo “刷新輸出不同的六個字符組合:”.substr(md5(microtime(true)), 0, 6);
?
說明:此函數先獲取當前時間,然後通過md5進行加密,然後再通過substr截取六位數,當前時間是不會重複的,從而保證生成的六個字符串永遠不會重複。
效果圖:
注意事項:此代碼必須在php環境下運行。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/309157.html