在我的表中,我插入了新用户的记录。我有一个整数字段作为主键。我想让这个ID更加安全,因为这个ID是向所有人公开的。任何用户或者人都可以看到这个ID。
如果我生成的ID像这样:
如果我生成的ID像这样:
0000000001
...
0000000023
...
0000000157
...
由于id是按1递增的顺序存储的,因此很容易被其他人猜到。为避免这种情况的发生,我希望在一个单独的字段中存储一个“公共”id,该字段是此自动递增的主键的字母数字表示形式。
因此,在数据库中,表将如下所示:
id------------------public_id
---------------------------------
0000000001 -------- W3UB3VNAU3222
0000000002 -------- 7BNXYO28CN2KK
我考虑使用哈希。但哈希长度固定为40或以上。但我希望公共ID长度固定为10个字符。应该是唯一的,如果可能的话,我更喜欢从id
生成它。
请告诉我如何创建这个?是否有任何内置函数可以帮助我实现?
我了解了hash()
函数和crc32
:http://www.php.net/manual/en/function.hash.php#104987它将给出8个字符长度的哈希。以后会有冲突吗?
测试:
echo hash('crc32', '0000000001'); // gives 6c13f76e