本文目錄一覽:
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-tw/n/309157.html