用PHP生成非重复标识符的方法

本文演示了为PHP生成一个不重复标识符的方法,供大家参考,具体实现方法如下:

不仅生成重复身份,我们主要是根据当前时间的时间,然后转换为MD5值,这几乎是唯一可以保证的标签,下面关于PHP的顺序不重复标识符代码,有兴趣的朋友可以看一下

PHP是一种功能生成唯一ID:uniqid(),这是基于对当前时间的秒数,并应用如下:

复制代码如下:回波uniqid();的 / / 13位的字符串

回声uniqid(php_ ); / /当然你可以添加前缀

回声uniqid(php_,true); / /如果二参数more_entropy真正产生23位的字符串

但是它产生的标志可能不是唯一的,所以很多人会:

复制代码代码如下:< PHP

这是第一次和简单的方法,当然,用SHA1()函数也可以。

回声MD5(uniqid());

第二,利用时间戳的方法

回声MD5(时间)()。mt_rand(11000000));

>

实例uff1a

复制代码代码如下:<

生成唯一标识符

/ / SHA1()函数,安全散列算法(SHA1)

功能create_unique(){

数据_server美元美元'http_user_agent'} {。_server美元'remote_addr'} {

时间()。伦德();

返回SHA1($数据);

返回MD5(时间());

返回数据;

}

>

例子如下:

复制代码代码如下:< PHP

NewHash = create_unique(美元);

回声NewHash美元;

>

我看到很多人使用MD5()函数,即使它并不完全意味着这个目的:

复制代码如下:生成唯一字符串

回声MD5(时间)()。mt_rand(11000000));

其实是有一个PHP函数命名uniqid(),是指

唯一的字符串生成

uniqid(回声);

打印

4bd67c947233e

* /

另一个唯一的字符串生成

uniqid(回声);

打印

4bd67c9472340

* /

您可能注意到,尽管字符串是唯一的,但前面的几个字符是相似的,因为生成的字符串与服务器时间相关。

但事实上,有一个友好的方面,因为每一个新生成的ID是按字母顺序排列的,这种排序变得非常简单。

为了减少重复的概率,您可以通过前缀或第二个参数来增加:

将代码复制如下:使用前缀

回声uniqid('foo_);

打印

foo_4bd67d6cd8b8f

* /

更多熵

回声uniqid('',真的);

打印

4bd67d6cd8b926.12135106

* /



回声uniqid('bar_ ',真的);

打印

bar_4bd67da367b650.43684647

* /

这个函数将生成比MD5()更短的字符串,并节省一些空间。

PHP方法生成全局唯一标识符(GUID)

GUID在空间和时间上是唯一的,可以同时保证来自不同地方的不同号码。

世界上没有两台计算机可以生成重复的GUID值。

当需要GUID时,可以由算法自动生成,而无需管理权限。

GUID的长度固定且相对较短,因此非常适合于排序、识别和存储。

复制代码代码如下:< PHP

生成PHP

功能getguid(){

charid美元= strtoupper(MD5(uniqid(mt_rand(()(),真的))))



$字符= CHR(45); / /

$ UUID = substr(charid美元,0, 8美元,连字符)。

。substr(charid美元,8, 4美元,连字符)。

。substr(charid美元,12, 4美元,连字符)。

。substr(charid美元,16, 4美元,连字符)。

。substr(charid美元,20,12);

返回的UUID;

}

>

希望本文能对大家的PHP程序设计有所帮助。