国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP注冊碼/序列號生成實例程序

2024-05-04 21:47:34
字體:
來源:轉載
供稿:網友

昨天開發一個產品要求由網站總后臺生成一個注冊碼/序列號,然后我們以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之類的驗證碼

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿巴嘎旗| 西和县| 屯昌县| 岗巴县| 黑水县| 图木舒克市| 勐海县| 金秀| 阳原县| 石柱| 江孜县| 玉屏| 文山县| 乡城县| 方山县| 黔东| 江华| 阿合奇县| 开原市| 中宁县| 靖安县| 东丽区| 岑溪市| 建昌县| 伊川县| 阿坝| 扎赉特旗| 宜章县| 广宁县| 房产| 台中县| 溧水县| 三门峡市| 冕宁县| 华阴市| 九龙坡区| 修水县| 会理县| 汉沽区| 台北市| 定结县|