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 相关文章推荐
关于PHP5 Session生命周期介绍
Mar 02 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
rephactor 优秀的PHP的重构工具
Jun 09 PHP
php数据库配置文件一般做法分享
Jul 07 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
php实现约瑟夫问题的方法小结
Mar 23 PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 PHP
最新最全PHP生成制作验证码代码详解(推荐)
Jun 12 PHP
php实现图片按比例截取的方法
Feb 06 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
PHP设计模式之单例模式定义与用法分析
Mar 26 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 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.ini中文版(2)
2006/10/09 PHP
php中生成随机密码的自定义函数代码
2013/10/21 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
php compact 通过变量创建数组
2016/11/15 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
python自动安装pip
2014/04/24 Python
在Python中使用列表生成式的教程
2015/04/27 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
python实现简单登陆流程的方法
2018/04/22 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
python语言的优势是什么
2020/06/17 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
德国旅游网站:weg.de
2018/06/03 全球购物
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
实习协议书
2015/01/27 职场文书
幼儿园国培研修日志
2015/11/13 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
mysql知识点整理
2021/04/05 MySQL
python xlwt模块的使用解析
2021/04/13 Python