Home > php教程 > php手册 > PHP注册码/序列号生成实例程序

PHP注册码/序列号生成实例程序

WBOY
Release: 2016-05-25 16:49:53
Original
2824 people have browsed it

昨天开发一个产品要求由网站总后台生成一个注册码/序列号,然后我们以573-225-374-118这种格式生成,并且不重复在数据库是唯一的,下面我把我找到的与自己写的都记录一下。

原理,就是生成mt_rand随机种子来生成,然后利用相关函数进行读取操作.

例1代码如下:

<?php
/** 
 * 序列号生成器
 */
function snMaker($pre = &#39;&#39;) {
    $date = date(&#39;Ymd&#39;);
    $rand = rand(1000000, 9999999);
    $time = mb_substr(time() , 5, 5, &#39;utf-8&#39;);
    $serialNumber = $pre . $date . $time . $rand;
    // echo strlen($serialNumber).&#39;<br />&#39;;
    return $serialNumber;
}
echo snMaker();
/** 
 * 将一个字符串的一部分替换成某一特定字符
 * @param str or int $str 需要处理的字符串
 * @param str or int $to 将替换成什么字符串
 * @param int $start 保留前几个字符
 * @param int $end 保留后几个字符
 */
function hideString($str = &#39;hello&#39;, $to = &#39;*&#39;, $start = 1, $end = 0) {
    $lenth = strlen($str) - $start - $end;
    $lenth = ($lenth < 0) ? 0 : $lenth;
    $to = str_repeat($to, $lenth);
    $str = substr_replace($str, $to, $start, $lenth);
    return $str;
}
echo hideString();
?>
Copy after login

例2,生成注册码/序列号,以下为引用的内容,代码如下:

<?php
/* 配置 */
$key_sum = 1500; //CD-Key最大数量,防止重复值
$key_total = 1000; //最终需要的CD-Key数量
$limiter = "-"; //CD-Key每组数字之间的连接符
$save_file = "./cd_key.txt"; //保存CD-Key文件
$num_file = "./number.txt"; //序列数字文件
$file = file($num_file); //打开序列数文件
$start_num = 0; //最小随机数
$end_num = count($file); //最大随机数
/* 生成随机数字串 */
$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("rn", "", $key_str);
}
/* 过滤重复串并且提取最终需要的CD-Key数量 */
$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("rn", $key_result)) or die("Write $save_file failed");
unset($cdkey);
unset($$key_result);
fclose($fp);
echo "Create $key_total key succeed!";
/* 随机函数 */
function rand_num($start, $end) {
    return mt_rand($start, $end);
}
?>
Copy after login

执行上面的程序就会生成cd_key.txt文件,里面包含了类似下面的验证码,以下为引用的内容:

573-225-374-118,691-553-280-280,969-594-607-211,251-575-776-563,280-289-739-533...

这样,就完整的达到了我们的目的,你也可以把以上随机串保存到数据库里,方便调用,灵活设置以上变量,你能够生成16位、20位的验证码,如果你有兴趣,也可以写类似 XDF8F-ADE89-D0J5C-4RTFG之类的验证码


本文链接:

收藏随意^^请保留教程地址.

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template