最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > 建站教程 > php教程 >

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

时间:2014-06-09 16:40来源: 作者: 点击:
昨天开发一个产品要求由网站总后台生成一个注册码/序列号,然后我们以573-225-374-118这种格式生成,并且不重复在数据库是唯一的,下面我把我找到的与自己写的都记录一下。 原理,就是生成mt_r

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

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

(责任编辑:admin)
------分隔线----------------------------
栏目列表
推荐内容
  • PHP编译问题

    这章节搜集了很多编译时会产生的错误情况。 1. 我用匿名CVS得到最新版的源代码包,但没有配置...

  • 简单的php操作word文件实现代码

    下面我们利用windown com组件来实现doc文件一些简单的操作,希望对你有所帮助,实例代码如下: ?...

  • 一些php数组的学习入门笔记

    在php数组中有三种类型:数值数组 带有数字 ID 键的数组 关联数组 数组中的每个 ID 键关联一个...

  • php中把指针移动到数据集初始位置

    在php中我们要返回数据集初始位置mysql_data_seek函数即可实现,下面看代码 ? //Startsnipit1 $sql = SE...

  • php删除文件程序代码

    在php中要删除文件我们需要使用php提供的unlink()文件删除函数,下面我来给大家详细介绍利用u...

  • RFC1939-POP3协议中文版

    1. 简介 对于在网络上的比较小的结点,支持消息传输系统(MTS)是不实际的,例如,一台工作站...