国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

使用PHP生成1000個隨機注冊碼

2024-05-04 21:51:32
字體:
供稿:網(wǎng)友

一般程序中都需要用到注冊碼,為了防止盜版,如果把生成的注冊碼保存到數(shù)據(jù)庫里,并且通過軟件在客戶端訪問服務(wù)器來匹配客戶端輸入的驗證碼是否正確,這是一種好的解決盜版的方案。

下面描述的代碼就是使用PHP生成數(shù)字驗證碼,類似于:152-562-986-230 這樣的,為了保證驗證碼不被猜中,我們采用比較復(fù)雜的12位數(shù)字,那么可能性就有:999999999999 這么多,那么重復(fù)的幾率就很小。

我們下面的的程序就演示了身成1000個隨機的注冊碼的例子。包括兩個程序,一個程序用來生成從 100到999的序列數(shù)字并且保存到文件里,第二個程序是從文件中提取隨機數(shù)對應(yīng)行的數(shù)字生成驗證碼串,然后身成1000個隨機串,最后保存在文件里。

程序一:生成序列數(shù)字

以下為引用的內(nèi)容:

<?php
/**
* File: 生成4位的數(shù)字
* Author: heiyeluren
* Create: 2005-9-5 22:26
*/

/* 配置 */
$start_num = 100;
$end_num = 999;
$save_file = "./number.txt";

//生成從1000到9999的數(shù)字序列
for ($i=$start_num; $i<=$end_num; $i )
{
$nums[] = $i;
}

//把上面生成的數(shù)字序列寫入文件
$fp = fopen($save_file, "w") or die("Open $save_file failed");
fwrite($fp, implode("/r/n", $nums)) or die("Write $save_file failed");
unset($nums);
fclose($fp);

echo "Create $save_file succeed!";

?>

執(zhí)行上面的代碼,就會在當(dāng)前程序目錄生成一個 number.txt文件,里面保存了類似下面的數(shù)字:

以下為引用的內(nèi)容:
100
101
102
103
104
105
106...

程序二:生成驗證碼


以下為引用的內(nèi)容:
<?php
/**
* File: 生成CD-Key程序
* Author: heiyeluren
* Create: 2005-9-5 22:26
*/

/* 配置 */
$key_sum = 1500; //CD-Key最大數(shù)量,防止重復(fù)值
$key_total = 1000; //最終需要的CD-Key數(shù)量
$limiter = "-"; //CD-Key每組數(shù)字之間的連接符
$save_file = "./cd_key.txt"; //保存CD-Key文件
$num_file = "./number.txt"; //序列數(shù)字文件
$file = file($num_file); //打開序列數(shù)文件
$start_num = 0; //最小隨機數(shù)
$end_num = count($file); //最大隨機數(shù)

/* 生成隨機數(shù)字串 */
$cdkey = array();
for ($i=0; $i<$key_sum; $i )
{
$key_str = $file[rand_num($start_num, $end_num)].$limiter.
$file[rand_num($start_num, $end_num)].$limiter.
$file[rand_num($start_num, $end_num)].$limiter.
$file[rand_num($start_num, $end_num)];
$cdkey[] = str_replace("/r/n", "", $key_str);
}

/* 過濾重復(fù)串并且提取最終需要的CD-Key數(shù)量 */
$cdkey = array_unique($cdkey);
$key_result = array();
for ($i=0; $i<$key_total; $i )
{
$key_result[] = $cdkey[$i];
}

/* 把最終的CD-Key寫入文件 */
$fp = fopen($save_file, "w ") or die("Open $save_file failed");
fwrite($fp, implode("/r/n", $key_result)) or die("Write $save_file failed");
unset($cdkey);
unset($$key_result);
fclose($fp);

echo "Create $key_total key succeed!";

/* 隨機函數(shù) */
function rand_num($start, $end)
{
return mt_rand($start, $end);
}

?>

執(zhí)行上面的程序就會生成cd_key.txt文件,里面包含了類似下面的驗證碼:

以下為引用的內(nèi)容:
573-225-374-118
691-553-280-280
969-594-607-211
251-575-776-563
280-289-739-533...

這樣,就完整的達到了我們的目的,你也可以把以上隨機串保存到數(shù)據(jù)庫里,方便調(diào)用。靈活設(shè)置以上變量,你能夠生成16位、20位的驗證碼。如果你有興趣,也可以寫類似 XDF8F-ADE89-D0J5C-4RTFG之類的驗證碼,呵呵發(fā)揮下想象力。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 延长县| 娱乐| 绥棱县| 佛冈县| 丰宁| 南涧| 石棉县| 石景山区| 乐平市| 时尚| 泰州市| 双流县| 广元市| 兰考县| 清河县| 铜山县| 海盐县| 凤凰县| 独山县| 合阳县| 长泰县| 黑山县| 修文县| 巨野县| 奇台县| 祁阳县| 安义县| 新绛县| 曲麻莱县| 孟州市| 越西县| 宁南县| 扶余县| 兴义市| 洪江市| 钟祥市| 文成县| 金平| 新河县| 理塘县| 柏乡县|