如何在PHP或AS3等中生成字母数字ID,而不是经典的自动递增数字ID。
例如,YouTube会将其用作视频ID。 Facebook为上传的图像名称生成长字母数字字符串,等等。
修改 我不是如何生成字符串本身,而是如何生成像MySQL列中的auto_increment列那样的唯一字符串。
答案 0 :(得分:1)
在PHP中,您可以使用base_convert更改为更大的数字基数(最多36个,格式为0-9a-z,等于10,依此类推)。
问候,Alin
答案 1 :(得分:1)
为了保证唯一性,您需要在服务器端提供ID。然后它可以是例如用于获取下一个数字的MySQL单元格。如果您有一个64位的数字,您也可以在加载页面时生成该数字,无论最终是否需要唯一ID,如果您需要将其始终嵌入JavaScript文件中。然后,如果用户例如保存数据,您可以存储随之提交的ID。只要确保计数器可靠地递增,就不需要保留未使用的ID号,因此使用MySQL只需要一个单元格,除了要保存的实际数据外,还需要一个单元格。
使用64位,您永远不会耗尽ID,如果您希望它更难以预测下一个ID是什么,您可以重新排序这些位。如果需要任何类型的安全性,您应该更多地考虑从运行数字到不太可预测的数字的1:1映射。
至于保持递增数字的位置,它可以是任何SQL数据库中的行,或者如果您处理锁定,则可以是简单的文本文件,或者如果您可以在服务器上始终运行程序,则可以使用任何获得新数字的IPC。只要确保服务器重新启动,序列将至少从它离开的地方继续。
答案 2 :(得分:1)
唯一性的最佳方式是将当前时间/日期(以毫秒为单位)与随机数组合。
看看UUID
的
http://en.wikipedia.org/wiki/Universally_unique_identifier
它们看起来不像youtube上的字符串,但它们是独一无二的
答案 3 :(得分:1)
AS3
import mx.utils.UIDUtil;
var uuid:String = UIDUtil.createUID()
PHP
$unique = md5( uniqid() ); // 32 characters long
$unique = sha1( uniqid() ); // 40 characters long