php

php 根据用户id生成唯一邀请码

 
需求:
 
根据用户id生成唯一邀请码,并且可以根据邀请码反推出用户的ID。
 
代码如下:
 
function createInvitationCode($user_id) {

static $source_string = 'E5FCDG3HQA4B1NOPIJ2RSTUV67MWX89KLYZ';

$num = $user_id;

$code = '';

while ( $num > 0) {

$mod = $num % 35;

$num = ($num - $mod) / 35;

$code = $source_string[$mod].$code;

}

if(empty($code[3]))

$code = str_pad($code,4,'0',STR_PAD_LEFT);

return $code;

}

function decodeInvitationCode($code) {

static $source_string = 'E5FCDG3HQA4B1NOPIJ2RSTUV67MWX89KLYZ';

if (strrpos($code, '0') !== false)

$code = substr($code, strrpos($code, '0')+1);

$len = strlen($code);

$code = strrev($code);

$num = 0;

for ($i=0; $i < $len; $i++) {

$num += strpos($source_string, $code[$i]) * pow(35, $i);

}

return $num;

}

$invitationCode = createInvitationCode('1234');
echo $invitationCode."<br/>";
echo decodeInvitationCode($invitationCode);

//输出

05EA
1234


具体业务处理时可以先判断解析出来的userid是否存在。
 
 

0 个评论

要回复文章请先登录注册