加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-01-19 15:08:33 所属栏目:PHP教程 来源:互联网
导读:昨天开发一个产品要求由网站总后台生成一个注册码/序列号,然后我们以573-225-374-118这种格式生成,并且不重复在数据库是唯一的,下面我把我找到的与自己写的都记录一下。 原理,就是生成mt_rand随机种子来生成,然后利用相关函数进行读取操作. 例1代码如下:
  昨天开发一个产品要求由网站总后台生成一个注册码/序列号,然后我们以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...

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读