1

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

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

编辑: 这不是我如何生成字符串本身,而是如何生成唯一的字符串,例如 MySQL 列中的 auto_increment 列。

4

4 回答 4

1

AS3

import mx.utils.UIDUtil; 
var uuid:String = UIDUtil.createUID()

PHP

$unique = md5( uniqid() );  // 32 characters long
$unique = sha1( uniqid() );  // 40 characters long
于 2010-10-05T14:58:36.017 回答
1

在 PHP 中,您可以使用base_convert更改为更大的数字基数(最多 36,格式为 0-9a-z,a 等于 10,依此类推)。

问候, 阿林

于 2010-10-05T13:44:58.673 回答
1

唯一性的最佳方法是将当前时间/日期(以毫秒为单位)与随机数相结合。看看UUID_

http://en.wikipedia.org/wiki/Universally_unique_identifier

它们看起来不像 youtube 上的字符串,但它们绝对是独一无二的

于 2010-10-05T14:52:40.140 回答
1

为了保证唯一性,您需要在服务器端提供 ID。然后它可以是例如一个 MySQL 单元,用于获取下一个数字。如果您有一个 64 位数字,您也可以在页面加载时生成该数字,无论最终是否需要唯一 ID,如果您需要始终将其嵌入 JavaScript 文件中。然后,如果用户保存数据,您可以将提交的 ID 连同它一起存储。只要确保计数器可靠地递增,就不需要保留未使用的 ID 号,因此使用 MySQL 时,除了要保存的实际数据外,您只需要一个单元格始终递增。

使用 64 位,您将永远不会用完 ID,如果您希望它更难以预测下一个 ID 将是什么,您可以重新排序这些位。如果需要任何类型的安全性,您应该更多地研究从运行数字到不太可预测的数字的 1:1 映射。

至于保持递增数字的位置,它可以是任何 SQL 数据库中的一行,或者如果您处理锁定,则可以是一个简单的文本文件,或者如果您可以让一个程序始终在服务器上运行,您可以使用任何类型的 IPC 与其通信获取新号码。只要确保如果服务器重新启动,序列将至少从它离开的地方继续。

于 2010-10-05T14:34:43.100 回答