php专区

 首页 > php专区 > PHP应用 > 常用功能 > PHP注册码/序列号生成实例程序 - php高级应用

PHP注册码/序列号生成实例程序 - php高级应用

分享到:
【字体:
导读:
          昨天开发一个产品要求由网站总后台生成一个注册码 序列号,然后我们以573-225-374-118这种格式生成,并且不重复在数据库是唯一的,下面我把我...

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

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

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

例1代码如下:

  1. /** 
  2.  * 序列号生成器 
  3.  */ 
  4. function snMaker($pre = '') { 
  5.  $date = date('Ymd'); 
  6.  $rand = rand(1000000,9999999); 
  7.  $time = mb_substr(time(), 5, 5, 'utf-8'); 
  8.  $serialNumber = $pre.$date.$time.$rand
  9. // echo strlen($serialNumber).''; 
  10.  return $serialNumber
  11. echo snMaker(); 
  12. /** 
  13.  * 将一个字符串的一部分替换成某一特定字符 
  14.  * @param str or int $str 需要处理的字符串 
  15.  * @param str or int $to 将替换成什么字符串 
  16.  * @param int $start 保留前几个字符 
  17.  * @param int $end 保留后几个字符 
  18.  */ 
  19. function hideString($str = 'hello'$to = '*'$start = 1, $end = 0) { 
  20.  $lenth = strlen($str) - $start - $end
  21.  $lenth = ($lenth < 0) ? 0 : $lenth
  22.  $to = str_repeat($to$lenth); 
  23.  $str = substr_replace($str$to$start$lenth); 
  24.  return $str
  25. echo hideString(); 

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

  1.  /* 配置 */ 
  2.  $key_sum = 1500;    //CD-Key最大数量,防止重复值 
  3.  $key_total = 1000;    //最终需要的CD-Key数量 
  4.  $limiter = "-";    //CD-Key每组数字之间的连接符 
  5.  $save_file = "./cd_key.txt"//保存CD-Key文件 
  6.  $num_file = "./number.txt"//序列数字文件 
  7.  $file = file($num_file);  //打开序列数文件 
  8.  $start_num = 0;    //最小随机数 
  9.  $end_num = count($file);  //最大随机数 
  10.  /* 生成随机数字串 */ 
  11.  $cdkey = array(); 
  12.  for ($i=0; $i<$key_sum$i++) 
  13.  { 
  14.      $key_str = $file[rand_num($start_num$end_num)].$limiter
  15.                          $file[rand_num($start_num$end_num)].$limiter
  16.                          $file[rand_num($start_num$end_num)].$limiter
  17.                          $file[rand_num($start_num$end_num)]; 
  18.       $cdkey[] = str_replace("rn"""$key_str); 
  19.  } 
  20.  /* 过滤重复串并且提取最终需要的CD-Key数量 */ 
  21.  $cdkey = array_unique($cdkey); 
  22.  $key_result = array(); 
  23.  for ($i=0; $i<$key_total$i++) 
  24.  { 
  25.      $key_result[] = $cdkey[$i]; 
  26.  } 
  27.  /* 把最终的CD-Key写入文件 */ 
  28.  $fp = fopen($save_file"w+"or die("Open $save_file failed"); 
  29.  fwrite($fp, implode("rn"$key_result)) or die("Write $save_file failed"); 
  30.  unset($cdkey); 
  31.  unset($$key_result); 
  32.  fclose($fp); 
  33.  echo "Create $key_total key succeed!"
  34.  /* 随机函数 */ 
  35.  function rand_num($start$end
  36.  { 
  37.      return mt_rand($start$end); 
  38.  } 
  39. ?> 

执行上面的程序就会生成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之类的验证码

分享到:
PHP多进程编程实例说明 - php高级应用
PHP多进程编程实例说明 使用PHP真正的多进程运行模式,适用于数据采集、邮件群发、数据源更新、tcp服务器等环节。 PHP有一组进程控制函数(编译时需要 –enable-pcntl与posix扩展),使得php能在*nix系统中实现跟c一样的创建子进程、使用exec函数执行程序、处理信号等功能, PCNTL使用ticks来作...
PHP异常处理、错误报告、日志 - php高级...
PHP异常处理、错误报告、日志 在php中我们会经常碰到一些错误要去处理,下面我来总结php中的异常处理、错误报告、日志一些内容总结与介绍。 错误处理: 1.语法错误 2.运行时错误 3.逻辑错误 错误报告: 错误:E_ERROT 程序会中断,发生错误 警告:E_WARNING 程序不会中断,但可能部分...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……