http://hi.baidu.com/zr443/blog/item/882b30036e9f28ea09fa9370.html
2008-09-04 11:37
今天见这段代码,$unique_id= md5(uniqid("")),甚是不解。后来在网上查了下uniqid()
产生只一的值。
语法: string uniqid(string prefix);
返回值: 字符串
函数种类: 编码处理
本函数会依据当时的毫秒以及指定的前置字符串产生一个独一无二的字符串。参数 prefix 为前置的字符串,最多可达 114 字符。
本例产生 32 个字符的独一无二字符串。
<?php $token = md5(uniqid(rand())); echo $token; ?>
再引用一哥们做的试验
今天看手册上关于uniqid的说明: uniqid() returns a prefixed unique identifier based on the current time in microseconds. 字面翻译如下: uniqid() 返回一个带前缀的唯一标识基于当前时间精确到微秒. 只是说基于当前时间,但是没有说明与当前时间的关系如何。 echo uniqid();可以看到uniqid始终是一个不断变化的长度为13的十六进制数。 <?php echo hexdec(uniqid())/(time()+microtime()); ?> 输出基本上在1048576左右。 可以断定,uniqid就是当前时间精确到微秒再乘以1048576(2的20次幂)最后转换为十六进制得到的。 知道uniqid与time的关系后uniqid就可以有更广泛的用途了,比如用文本论坛可以用uniqid作为帖子的文件名。 做在帖子索引中,可以很方便的按时间查找帖子。
结合上下代码看,我想他的作用是生成一个不重复的32位字符吧!总算彻底弄懂了。
|