PHP生成不重复标识符的方法


Posted in PHP onNovember 21, 2014

本文实例讲述了PHP生成不重复标识符的方法。分享给大家供大家参考。具体实现方法如下:

生成唯一不重复的标识我们主要是根据当前的一个时间time然后再转换在md5值,这样几乎是可以保证标签的唯一性,下面整理了一些关于PHP生成不重复标识符程序代码,感兴趣的朋友可以来看一下

PHP倒是自带了生成唯一id的函数:uniqid() ,它是基于当前时间微秒数的,用法如下:

echo uniqid(); //13位的字符串

echo uniqid("php_"); //当然你可以加上前缀

echo uniqid("php_", TRUE); //如果第二个参数more_entropy为true则生成23位字符串

但是它生成的标识有可能不是唯一的,所以很多人会:
<?php

    //这是第一种简单的方法,当然用sha1()函数也可以。

    echo md5(uniqid());

    //第二种,利用时间戳的方法

    echo md5(time() . mt_rand(1,1000000));

?>

例子:
<?

//生成唯一标识符

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

function create_unique() {

    $data = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']

     .time() . rand();

    return sha1($data);

    //return md5(time().$data);

    //return $data;

}

?>

例子如下:
<?php

$newhash = create_unique();

echo $newhash; 

?>

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

echo md5(time() . mt_rand(1,1000000));

There is actually a PHP function named uniqid() that is meant to be used for this.

// generate unique string

echo uniqid();

/* prints

4bd67c947233e

*/

// generate another unique string

echo uniqid();

/* prints

4bd67c9472340

*/

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

但实际上也存在友好的一方面,由于每个新生成的 ID 会按字母顺序排列,这样排序就变得很简单。

为了减少重复的概率,你可以传递一个前缀,或第二个参数来增加:

// with prefix

echo uniqid('foo_');

/* prints

foo_4bd67d6cd8b8f

*/

// with more entropy

echo uniqid('',true);

/* prints

4bd67d6cd8b926.12135106

*/

// both

echo uniqid('bar_',true);

/* prints

bar_4bd67da367b650.43684647

*/

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

php生成全球唯一标识符(GUID)的方法

GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。
世界上的任何两台计算机都不会生成重复的 GUID 值。
需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。
GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。

<?php

//php生成GUID

function getGuid() {

 $charid = strtoupper(md5(uniqid(mt_rand(), true))); 

 

 $hyphen = chr(45);// "-" 

 $uuid = substr($charid, 0, 8).$hyphen 

 .substr($charid, 8, 4).$hyphen 

 .substr($charid,12, 4).$hyphen 

 .substr($charid,16, 4).$hyphen 

 .substr($charid,20,12);

 return $uuid; 

}

?>

希望本文所述对大家的php程序设计有所帮助。
PHP 相关文章推荐
用Socket发送电子邮件
Oct 09 PHP
CakePHP去除默认显示的标题及图标的方法
Oct 22 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
Jun 03 PHP
php中$_GET与$_POST过滤sql注入的方法
Nov 03 PHP
php微信公众平台开发类实例
Apr 01 PHP
PHP开发中常用的十个代码样例
Feb 02 PHP
深入浅析Yii admin的权限控制
Aug 31 PHP
PHP PDOStatement::bindColumn讲解
Jan 30 PHP
php中pcntl_fork创建子进程的方法实例
Mar 14 PHP
浅析PHP7 的垃圾回收机制
Sep 06 PHP
php写app用的框架整理
Sep 29 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
php中HTTP_REFERER函数用法实例
Nov 21 #PHP
php中call_user_func函数使用注意事项
Nov 21 #PHP
PHP中shuffle数组值随便排序函数用法
Nov 21 #PHP
php常用数学函数汇总
Nov 21 #PHP
PHP检测字符串是否为UTF8编码的常用方法
Nov 21 #PHP
php防止恶意刷新与刷票的方法
Nov 21 #PHP
php采用curl实现伪造IP来源的方法
Nov 21 #PHP
You might like
用PHP编写PDF文档生成器
2006/10/09 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python扩展内置类型详解
2018/03/26 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
django富文本编辑器的实现示例
2019/04/10 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
python序列化与数据持久化实例详解
2019/12/20 Python
python中def是做什么的
2020/06/10 Python
Python自省及反射原理实例详解
2020/07/06 Python
Python Map 函数的使用
2020/08/28 Python
城市规划应届生推荐信
2014/09/08 职场文书
2014年个人总结范文
2015/03/09 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书