PHP注册码/序列号生成实例程序
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-17 09:47:51 浏览: 评论:0
昨天开发一个产品要求由网站总后台生成一个注册码/序列号,然后我们以573-225-374-118这种格式生成,并且不重复在数据库是唯一的,下面我把我找到的与自己写的都记录一下。
原理,就是生成mt_rand随机种子来生成,然后利用相关函数进行读取操作.
例1代码如下:
- /**
- * 序列号生成器
- */
- function snMaker($pre = '') {
- $date = date('Ymd');
- $rand = rand(1000000,9999999);
- $time = mb_substr(time(), 5, 5, 'utf-8');
- $serialNumber = $pre.$date.$time.$rand;
- // echo strlen($serialNumber).'<br />';
- return $serialNumber;
- }
- echo snMaker();
- /**
- * 将一个字符串的一部分替换成某一特定字符
- * @param str or int $str 需要处理的字符串
- * @param str or int $to 将替换成什么字符串
- * @param int $start 保留前几个字符
- * @param int $end 保留后几个字符
- */
- function hideString($str = 'hello', $to = '*', $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();
例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);
- }
- ?>
执行上面的程序就会生成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之类的验证码
Tags: PHP注册码 序列号 生成
- 上一篇:PHP异常处理、错误报告、日志
- 下一篇:PHP多进程编程实例说明
相关文章
- ·PHP生成CSV文件用Excel打开乱码问题(2013-12-07)
- ·PHP生成动态WAP页面(2013-12-09)
- ·用PHP生成自己的LOG文件(2013-12-09)
- ·PHP和MySQL生成的标签云实现代码(2014-01-03)
- ·php生成EXCEL文档实例程序(2014-01-05)
- ·php生成与读取excel文件(.csv)实例(2014-07-01)
- ·超简单PHP生成二维码实例(2014-07-14)
- ·PHPExcel生成和读取Excel文件实例程序(2014-07-18)
- ·php中SimpleXML生成与解析xml文件(2014-08-20)
- ·PHP生成和获取XML格式数据实现代码(2014-08-20)
- ·PHP生成XML格式数据与解析xml数据(2014-08-20)
- ·php将pdf生成png缩略图的实例程序(2014-08-27)
- ·php生成zip压缩文件两个实例详解(2014-08-27)
- ·PHP生成带LOGO的二维码图像(2014-08-28)
- ·php生成二维码程序代码(2014-08-28)
- ·php生成html静态页面的二种方法(2014-08-28)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)