PHP为每个ID设置范围内的每日数字



我正在尝试计算一个排序或"每日随机数";在一个范围内,这是无法猜测的,对于我们网站上的每个用户,但无法弄清楚如何做到这一点。

我也不想要随机数,它必须是PHP中计算的数字,而不是额外的数据库字段或任何类似的字段。

我想到了一个函数,它可以获取用户的ID和一年中的哪一天,并计算出这个数字。

示例:
USERID:12345,范围:0-7(每个用户的常数值)
DayOfYear:250(每天更改)

然后类似于:((12345+250)MODULO 8)(所以我为每个用户设置了从0到7的范围)。问题是,同样的数字每8天就会出现一次,用户会很快找到。

每个用户不一定每天都需要不同的号码,即使在几天内相同的号码也可以,但并非所有用户都必须有相同的号码。此外,最重要的是,没有循环的场景,所以用户无法猜测他们的每日数字。

谢谢你的帮助。

这个问题有很多答案,没有一个是最好的。。。但我的心情很有趣:

$id = hexdec(substr(md5($userId . date('z')), 0, 3)) % 8;

使用md5函数从字符串中获取十六进制字符串。然后使用这个字符串的一部分来计算mod 8。

在接下来的10天内,当使用您的用户id 时,id将为5,7,5,3,6,0,0,2,4

但要猜测0到7之间的数字并不难,不要为了安全起见使用这个

最新更新