邀请返现php怎么实现_php 生成邀请码

很多app会有一个,邀请新用户,自己获得奖励的机制。

通过userid 生成每个用户的唯一邀请码,通过这个邀请码进来的用户,就可以带给自己奖励

其原理就是

十进制转换 更大进制

一. 最原始的邀请码

可以用自己的 userid

缺点是暴露了自己的userid,以及很多userid是十进制,有可能太长

二. 最方便的邀请码生成方式

把十进制转换成 十六进制(或其他进制函数base_convert)

base_convert(string $number, int $frombase , int $tobase)

$number 原始数据

$frombase 原始数据的 进制格式 (2 和 36 之间)

$tobase to进制格式 (2 和 36 之间)

//0-9 a-z(代表10-35)

base_convert(102023, 10 , 10);// 102023 (10进制)

base_convert(102023, 10 , 16);// 18e87 (16进制)

base_convert(102023, 10 , 36);// 26pz (36进制)

三.base_convert原理

//简单实现一个 10 转 16进制的函数

function my_base_convert($int,$from = 10,$to = 16){

$bases = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];//代表0-15

$toValue = '';

$shang = $int;

do{

$yu = $shang % 16 ;

$shang = floor($shang / 16) ;

$toValue = $bases[$yu].$toValue;

}while($shang > 0);

return $toValue;

}

base_convert(102023, 10 , 16);// 18e87 (16进制)

my_base_convert(102023,10,16);// 18e87 (16进制)

四.有没有代替的方式?

base_convert的进制方式,是有顺序的,容易被人反向解析到 userid

有没有我们自己实现一个类似的base_convert,,不过是无序的?

function my_base_convert($int,$from = 10,$to = 16){

$bases = ['a','b','0','1','2','3','4','7','8','9','c','d','e','f','5','6'];//代表0-15

$toValue = '';

$shang = $int;

do{

$yu = $shang % 16 ;

$shang = floor($shang / 16) ;

$toValue = $bases[$yu].$toValue;

}while($shang > 0);

return $toValue;

}

my_base_convert(102023,10,16);// b8587 (无序16进制)

五.更大的无序进制转换

只需要把 $bases 放大就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值