生成字母数字ID(唯一字符串)

时间:2010-10-05 13:40:17

标签: php actionscript-3 alphanumeric

如何在PHP或AS3等中生成字母数字ID,而不是经典的自动递增数字ID。

例如,

YouTube会将其用作视频ID。 Facebook为上传的图像名称生成长字母数字字符串,等等。

修改 我不是如何生成字符串本身,而是如何生成像MySQL列中的auto_increment列那样的唯一字符串。

4 个答案:

答案 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