首页 后端开发 php教程 php生成一个不重复的会员号

php生成一个不重复的会员号

Sep 20, 2019 am 11:54 AM
php

php生成一个不重复的会员号

在不查询数据库的情况下,每个会员登录进来会生成一个数字字母组合不重复的会员卡号。

效果图如下:

会员号.png

当我们要将一个庞大的数据进行编号时,而编号有位数限制,比如5位的车牌号、10位的某证件号码、订单流水号、短网址等等,我们可以使用36进制计算出符合位数的不重复的编号。

我们将0-Z(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)分别代表数值0-35,如字母Z代表35。这样的话我要得到一个5位的编号,最大信息量就是36的5次方了,36^5 = 60466176,即最大的5位编号相当于10进制的数字:60466176。

本文中为了做演示,我们假定某俱乐部发放一批10位的会员卡号,会员卡号由3位城市编号+5位卡号编码+2位校验码组成。城市编号用区号表示,如755代表深圳,5位卡编号则由36进制的卡编号组成,后面两位校验码则是通过一定的算法生成的,校验码的用处是可以验证卡号的合法性。这样的话,我们生成的10位卡号相当于最大能满足6000多万会员卡号,并且是不重复唯一的卡号。

PHP

我们使用PHP进行进制转换,10进制转36进制。

class Code { 
 //密码字典 
 private $dic = array( 
 0=>'0', 1=>'1', 2=>'2', 3=>'3', 4=>'4', 5=>'5', 6=>'6', 7=>'7', 8=>'8', 
 9=>'9', 10=>'A', 11=>'B', 12=>'C', 13=>'D', 14=>'E', 15=>'F', 16=>'G', 17=>'H', 
 18=>'I',19=>'J', 20=>'K', 21=>'L', 22=>'M', 23=>'N', 24=>'O', 25=>'P', 26=>'Q', 
 27=>'R',28=>'S', 29=>'T', 30=>'U', 31=>'V', 32=>'W', 33=>'X', 34=>'Y', 35=>'Z' 
 ); 
 public function encodeID($int, $format=8) { 
 $dics = $this->dic; 
 $dnum = 36; //进制数 
 $arr = array (); 
 $loop = true; 
 while ($loop) { 
  $arr[] = $dics[bcmod($int, $dnum)]; 
  $int = bcdiv($int, $dnum, 0); 
  if ($int == '0') { 
  $loop = false; 
  } 
 } 
 if (count($arr) < $format) 
  $arr = array_pad($arr, $format, $dics[0]); 
 return implode(&#39;&#39;, array_reverse($arr)); 
 } 
 public function decodeID($ids) { 
 $dics = $this->dic; 
 $dnum = 36; //进制数 
 //键值交换 
 $dedic = array_flip($dics); 
 //去零 
 $id = ltrim($ids, $dics[0]); 
 //反转 
 $id = strrev($id); 
 $v = 0; 
 for ($i = 0, $j = strlen($id); $i < $j; $i++) { 
  $v = bcadd(bcmul($dedic[$id { 
  $i } 
  ], bcpow($dnum, $i, 0), 0), $v, 0); 
 } 
 return $v; 
 } 
}

我们定义Code类,先定义密码字典,即0-Z分别对应的数值,方法encodeID($int, $format)中参数$int表示数字,$format表示位数长度,比方encodeID(123456789,5)表示将数字123456789转换成5位的36进制编号,而方法decodeID($ids)用于将36进制的编号转换成10进制的编号。

我们可以这样生成卡号:

$code = new Code(); 
$card_no = $code->encodeID(888888,5);

如上,我们就可以得到一个5位的卡编号,它实际代表着卡号是888888(6个8)的会员编号,而实际进行转换后是5位编号:0J1VC。

接着,我们将城市编号和校验码加上,城市编号是已经定义好的,校验码则通过一定的算法取得,本例中,我们使用简单的算法:将前三位城市编号和五位卡编号进行md5加密,然后取md5值的前2位作为校验码,这样就得到了编号后面的两位校验码。

$card_pre = &#39;755&#39;; 
$card_vc = substr(md5($card_pre.$card_no),0,2); 
$card_vc = strtoupper($card_vc); 
echo $card_pre.$card_no.$card_vc;

实际应用中,可以通过数据库得到10进制的编号,保证编号唯一,再将上述代码组合,最终生成一个10位的不重复的会员卡号。

以上内容仅供参考!

推荐教程:PHP视频教程

以上是php生成一个不重复的会员号的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Stock Market GPT

Stock Market GPT

人工智能驱动投资研究,做出更明智的决策

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

爱思助手正版下载入口_爱思助手iPhone安装链接 爱思助手正版下载入口_爱思助手iPhone安装链接 Sep 16, 2025 am 11:30 AM

爱思助手正版下载入口在官网https://www.i4.cn/,提供电脑端和手机端下载,支持设备管理、应用安装、模式切换、屏幕投射及文件管理等功能。

笔趣阁1v1免费登录_笔趣阁1v1无广告入口链接 笔趣阁1v1免费登录_笔趣阁1v1无广告入口链接 Sep 16, 2025 am 10:24 AM

笔趣阁1v1免费无广告入口为https://www.biquge.info/,该平台涵盖都市、玄幻等多题材小说,更新及时,支持书名与作者搜索,设有热度排行榜;阅读界面简洁,可调节字体、背景及夜间模式,广告少且不干扰,加载流畅;适配手机与PC端,无需下载APP,登录即可同步书架与阅读记录。

小红书蒲公英入口查找技巧_小红书蒲公英官网访问路径 小红书蒲公英入口查找技巧_小红书蒲公英官网访问路径 Sep 16, 2025 pm 12:15 PM

小红书蒲公英入口可通过手机App或电脑端访问。1、手机端:打开小红书App,登录已完成实名认证的账号,点击“我”进入个人中心,找到“创作中心”或“合作中心”,点击“更多服务”后选择“博主合作”或“蒲公英会员”即可进入;2、电脑端:访问官网https://in.xiaohongshu.com/,点击右上角“登录”,使用已认证的创作者账号授权登录,系统自动识别身份后进入对应界面,新用户需提交身份证明、营业执照等材料完成入驻。平台提供数据分析、博主筛选、合作管理、内容投放与加热等功能,支持多种合作模式

炫书网最新地址_炫书网电子书官网阅读入口 炫书网最新地址_炫书网电子书官网阅读入口 Sep 16, 2025 am 10:15 AM

炫书网最新地址为https://www.xswang.com,该网站提供丰富多样的小说资源,涵盖都市、玄幻等多种题材,支持多端同步与个性化阅读设置,确保流畅舒适的阅读体验。

趣书网downbook更新入口_当书网bookdown电子书下载 趣书网downbook更新入口_当书网bookdown电子书下载 Sep 16, 2025 am 10:18 AM

趣书网downbook最新访问地址为https://downbook.cc/,该平台提供丰富电子书资源,涵盖多种题材,支持自定义阅读设置、夜间模式、离线下载及跨设备同步阅读进度,确保用户获得流畅舒适的阅读体验。

谷歌地球最新版在线使用_超清3D地球仪免安装进入 谷歌地球最新版在线使用_超清3D地球仪免安装进入 Sep 16, 2025 pm 12:39 PM

谷歌地球最新版在线使用入口是https://earth.google.com/web/,支持全球高清卫星影像、3D地形地貌、街景全景及历史影像回溯,无需下载即可在浏览器中流畅操作,并可通过账户同步收藏与自定义地标。

炫书网阅读链接_炫书网电子书在线访问地址 炫书网阅读链接_炫书网电子书在线访问地址 Sep 16, 2025 pm 02:27 PM

炫书网阅读链接为https://www.xswang.com,该平台提供分类清晰的小说资源,涵盖玄幻、都市等主流题材,支持个性化阅读设置与进度同步,并设有评论区和作者互动功能,提升用户阅读体验。

笔趣阁1v1免费入口_笔趣阁1v1最新登录地址 笔趣阁1v1免费入口_笔趣阁1v1最新登录地址 Sep 16, 2025 am 10:30 AM

笔趣阁1v1免费入口是https://www.biquge.info/,该平台提供多种类型小说,更新快,分类清晰,支持个性化阅读设置与离线缓存,拥有评论、评分、收藏等互动功能,阅读体验流畅。

See all articles