PHP之uniqid()函数用法


Posted in PHP onNovember 03, 2014

本文实例讲述了PHP中uniqid()函数的用法。分享给大家供大家参考。具体方法分析如下:

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
注释:由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数(请在字符串函数参考中查找)。

<?php

echo uniqid();

?>

本例产生 32 个字符的独一无二字符串。
<?php

$token = md5(uniqid(rand()));

echo $token;

?>

 
uniqid() 返回一个带前缀的唯一标识基于当前时间精确到微秒.
只是说基于当前时间,但是没有说明与当前时间的关系如何。
echo uniqid();可以看到uniqid始终是一个不断变化的长度为13的十六进制数。

来看看下面这段代码:

<?php

echo hexdec(uniqid())/(time()+microtime()); 

?>

输出基本上在1048576左右。

可以断定,uniqid就是当前时间精确到微秒再乘以1048576(2的20次幂)最后转换为十六进制得到的。
知道uniqid与time的关系后uniqid就可以有更广泛的用途了,比如在论坛中可以用uniqid作为帖子的文件名。

做在帖子索引中,可以很方便的按时间查找帖子。

结合上下代码看,我想他的作用是生成一个不重复的32位字符吧

uniqid() 函数本身就是基于以微秒计的当前时间,所以在高并发的情况下肯定会出现重复的情况,解决的的方法是你可以在这个前提下再生成一个随机数,然后两者结合后产生出一个新的数,这样就会降低重复的概率。如果还是想要再精确的话还可以加上客户端的IP的Md5码来一同生成,这样应该重复的概率就极低了,可以说是几乎不会重复。

<?php

function getRand(){

    return uniqid() . rand(1, 100000);

}

echo getRand();

exit;

?>

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

PHP 相关文章推荐
常见的PHP五种设计模式小结
Mar 23 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
微信API接口大全
Apr 15 PHP
PHP图像处理类库及演示分享
May 17 PHP
php实现网页缓存的工具类分享
Jul 14 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 PHP
php中this关键字用法分析
Dec 07 PHP
PHP中trait使用方法详细介绍
May 21 PHP
PHP实现的简单适配器模式示例
Jun 22 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
PHP htmlentities()函数用法讲解
Feb 25 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
PHP实现Soap通讯的方法
Nov 03 #PHP
ThinkPHP实现二级循环读取的方法
Nov 03 #PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
Nov 03 #PHP
ThinkPHP有变量的where条件分页实例
Nov 03 #PHP
PHP的拦截器实例分析
Nov 03 #PHP
php类中的各种拦截器用法分析
Nov 03 #PHP
PHP类的反射用法实例
Nov 03 #PHP
You might like
PHP 字符串操作入门教程
2006/12/06 PHP
php递归列出所有文件和目录的代码
2008/09/10 PHP
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
php中关于普通表单多文件上传的处理方法
2011/03/25 PHP
php cookies中删除的一般赋值方法
2011/05/07 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
Underscore源码分析
2015/12/30 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
js html实现计算器功能
2018/11/13 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
python 字段拆分详解
2019/12/17 Python
LookFantastic丹麦:英国美容护肤精品在线商城
2016/08/18 全球购物
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
c语言常见笔试题总结
2016/09/05 面试题
写出二分查找算法的两种实现
2013/05/13 面试题
中职生自荐信
2013/10/13 职场文书
教育实习生的自我评价分享
2013/11/21 职场文书
全国文明单位申报材料
2014/05/31 职场文书
霸气队列口号
2014/06/18 职场文书
早读课迟到检讨书
2014/09/25 职场文书
公司放假通知怎么写
2015/04/15 职场文书
小学运动会前导词
2015/07/20 职场文书
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS