基于用户名/电子邮件的PHP唯一ID

时间:2011-03-29 23:17:49

标签: php uniqueidentifier

我有一个电子邮件地址,我想基于它创建一个唯一的ID,所以说电子邮件是me@email.com,变成66wyy7eu

我找到了一个紧密的解决方案http://www.php.net/manual/en/function.uniqid.php#96898,但它需要输入为数字

5 个答案:

答案 0 :(得分:2)

电子邮件已经是唯一的。

您无法保证电子邮件的哈希值始终是唯一的。

如果您使用的是数据库。自动增量字段将是唯一的

答案 1 :(得分:0)

结帐hash()。这应该允许您根据字符串输入生成足够唯一的ID。

答案 2 :(得分:0)

你读过有关md5的内容吗? PHP md5 function

答案 3 :(得分:0)

请查看我对另一个性质相同的问题的答案,可以根据您的需要修改该功能:

PHP random URL names (short URL)

如上所述,电子邮件地址是唯一的,如果您将它们存储到数据库中,您将从自动增量列中获得唯一的标识号。

使用该ID,您可以使用上述函数为该ID创建唯一的哈希,并将其存储在同一行中,然后您有2个标识符用于您的电子邮件地址,内部使用的ID和加密的密钥用作短URL服务。

或者有一种更简单的方法,当你不断创建随机字符串,然后检查它是否在你的数据库中,如果密钥在你的数据库中,那么你生成另一个并再次检查,直到你有一个唯一的id。 / p>

这是一个简单的例子:

function createRandomID($length = 9)
{
    $random = '';
    for ($i = 0; $i < $length; $i++)
    {
        $random .= chr(rand(ord('a'), ord('z')));
    }
    return $random;
}

然后简单地做:

do
{
    $id = createRandomID();
}while(!idExists($id));

//Insert $id into our DB along with the email!

注意:字符的限制会影响它可以产生的唯一字符串的数量,数据库中的字符串越多,循环速率就越高,这可能会增加数据库的负载和导致用户的页面速度变慢。

答案 4 :(得分:0)

就个人而言,我会使用类似md5()或sha1()的东西。 PHP确实有一个hash()函数,允许您指定使用的算法:http://php.net/manual/en/function.hash.php