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

原理,就是生成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之类的验证码

时间: 2024-10-23 03:58:14

PHP注册码/序列号生成实例程序的相关文章

.NET平台开源项目速览(9)软件序列号生成组件SoftwareProtector介绍与使用

在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Software Protector序列号生成组件.今天就通过一篇简单的文章来预览一下其强大的功能.虽然我人为其已经基本满足了一个软件序列号的所有要素,但至于大家用不用得上,还得看大家的需求.总的来说,其源码并不复杂的,即使要增加功能,也可以使用其进行扩展.何苦,就我而言,虽然以前也做过简单的序列号注册和验证,但看完这个之后,自己真的是太天真了.以前也简直是弱爆了,所以某种意义上,这个组件的功

《Java语言导学(原书第6版)》一1.2 “Hello World!”实例程序

1.2 "Hello World!"实例程序 本节详细介绍编译和运行"Hello World!"实例程序的指令.1.2.1节介绍利用集成开发环境NetBeans IDE开发该程序的过程.NetBeans IDE在Java平台上运行,也就是说可在任何配置了JDK的操作系统上运行NetBeans IDE,包括Microsoft Windows.Solaris.Linux和OS X.建议尽可能使用NetBeans IDE取代命令行.1.2.2节和1.2.3节依次介绍不使用

《Java语言导学(原书第6版)》一一1.2 “Hello World!”实例程序

1.2 "Hello World!"实例程序 本节详细介绍编译和运行"Hello World!"实例程序的指令.1.2.1节介绍利用集成开发环境NetBeans IDE开发该程序的过程.NetBeans IDE在Java平台上运行,也就是说可在任何配置了JDK的操作系统上运行NetBeans IDE,包括Microsoft Windows.Solaris.Linux和OS X.建议尽可能使用NetBeans IDE取代命令行.1.2.2节和1.2.3节依次介绍不使用

PHP无限级分类菜单实例程序

最近在做一个内容管理的项目,客户硬要来一个多级分类,其实在许多的开源后台都是无限级的分类,比如111cn.net的后台,而这些分类的数据仅仅只保存到了一个数据表里,只是用源代码进行了关联而已. 而这些关联的数据并不复杂,其实一个优秀的后台设计,应该是无限的分类,这样,在进行二次开发时,不用再单独进行编程了,只要是功能一样,后台添加一个分类就可以了,这样就达到了功能共享了. 一个更简单的无限级分类菜单代码,我就把上面的原理简单实现一下,这个程序的关键就在于数据表的设计很有特色,不用递归,依靠个简单

求一个三层架构最简单的实例程序

问题描述 麻烦了 解决方案 解决方案二:自己用动软生成器生成一个呗解决方案三:什么软件生成器?解决方案四:比如说一个"登录"窗体,假设登录动作需要访问2个数据库的8个数据表,最后才返回一个"会话授权编号"字符串.那么你可以定义一个方法publicstaticBLL{publicstaticstringLogin(MyLoginModelx){.......}.......} 你的UI层设计(特别是,当你在设计界面上绑定服务api.而不是编写代码时)中不是调用数据库的

C++与C#混合生成.NET程序

c++|程序 本文提供了一个方法,让C++源码和C#源码一起编译链接成一个单一的Assembly. 由于C++提供了IJW方法,允许将旧有C++代码也编译成托管代码,因此这篇小文可以用极小的工作量来彻底解决所有C++遗留代码移植到.NET的问题. 这个方法,再加上前次的小文<您也使用托管C++吗?>,就可以把C++遗留代码移植到.NET的所有方法一网打尽了. 好了,言归正传. 假设一个很简单的C++程序,它只有一个函数: //c.h#pragma onceint sqr(int n);  //

asp用户注册实例程序

asp教程用户注册实例程序 建立access数据库教程db1.mdb,在其中建立数据表user,字段分别为:u_uid(自动),u_user(用户名:文本型),u_pass(密码:文本型) 四.建立接收register.asp中发送过来的表单数据,并插入到数据表user中的注册成功显示页面: <% '字符串连接数据库的方法 set conn=server.createobject("adodb.connection") conn.open "driver=driver

asp 一个简单生成随机数程序

一个简单生成随机数程序  Public Function GetRndCode(maxLen)   Dim strNewPass,whatsNext,upper,lower,intCounter   Randomize   For intCounter = 1 To maxLen    whatsNext = Int((1 - 0 + 1) * Rnd + 0)    If whatsNext = 0 Then     upper = 90     lower = 65    Else    

asp 电子邮箱email验证实例程序

 电子邮箱email验证实例程序 function IsValidEmail(email) dim names, name, i, c 'Check for valid syntax in an email address. IsValidEmail = true names = Split(email, "@") if UBound(names) <> 1 then    IsValidEmail = false    exit function end if for e