php GUID生成函数和类


Posted in PHP onMarch 10, 2014

一、GUID简介
GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) 。 GUID是一个通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。
在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如如注册表项、类及接口标识、数据库、系统目录等对象。
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个32位十六进制数。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。
二、GUID的优点
1.GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。
2.世界上的任何两台计算机都不会生成重复的 GUID 值。
3.需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。
4.GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。
三、GUID生成函数

function create_guid() {
    $charid = strtoupper(md5(uniqid(mt_rand(), true)));
    $hyphen = chr(45);// "-"
    $uuid = chr(123)// "{"
    .substr($charid, 0, 8).$hyphen
    .substr($charid, 8, 4).$hyphen
    .substr($charid,12, 4).$hyphen
    .substr($charid,16, 4).$hyphen
    .substr($charid,20,12)
    .chr(125);// "}"
    return $uuid;
}

三、GUID生成类
PHP获得GUID类:guid_class.php
<?php    
class System    
{    
    function currentTimeMillis()    
    {    
        list($usec, $sec) = explode(" ",microtime());    
        return $sec.substr($usec, 2, 3);    
    }    
}    
class NetAddress    
{    
    var $Name = 'localhost';    
    var $IP = '127.0.0.1';    
    function getLocalHost() // static    
    {    
        $address = new NetAddress();    
        $address->Name = $_ENV["COMPUTERNAME"];    
        $address->IP = $_SERVER["SERVER_ADDR"];    
        return $address;    
    }    
    function toString()    
    {    
        return strtolower($this->Name.'/'.$this->IP);    
    }    
}    
class Random    
{    
    function nextLong()    
    {    
        $tmp = rand(0,1)?'-':'';    
        return $tmp.rand(1000, 9999).rand(1000, 9999).rand(1000, 9999).rand(100, 999).rand(100, 999);    
    }    
}    
// 三段    
// 一段是微秒 一段是地址 一段是随机数    
class Guid    
{    
    var $valueBeforeMD5;    
    var $valueAfterMD5;    
    function Guid()    
    {    
        $this->getGuid();    
    }    
    //    
    function getGuid()    
    {    
        $address = NetAddress::getLocalHost();    
        $this->valueBeforeMD5 = $address->toString().':'.System::currentTimeMillis().':'.Random::nextLong();    
        $this->valueAfterMD5 = md5($this->valueBeforeMD5);    
    }    
    function newGuid()    
    {    
        $Guid = new Guid();    
        return $Guid;    
    }    
    function toString()    
    {    
        $raw = strtoupper($this->valueAfterMD5);    
        return substr($raw,0,8).'-'.substr($raw,8,4).'-'.substr($raw,12,4).'-'.substr($raw,16,4).'-'.substr($raw,20);    
    }    
}

GUID类使用方法:

require_once("guid.class.php");    
$Guid = new Guid();    
print $Guid->toString();
PHP 相关文章推荐
PHP与MySQL开发中页面乱码的产生与解决
Mar 27 PHP
PHP session会话的安全性分析
Sep 08 PHP
php在window iis的莫名问题的测试方法
May 14 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
PHP使用PHPexcel导入导出数据的方法
Nov 14 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
PHP的PDO操作简单示例
Mar 30 PHP
php 三元运算符实例详细介绍
Dec 15 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
Mac下php 5升级到php 7的步骤详解
Apr 26 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
Sep 18 PHP
PHP加Nginx实现动态裁剪图片方案
Mar 10 #PHP
php实现文件下载简单示例(代码实现文件下载)
Mar 10 #PHP
php实现文件编码批量转换
Mar 10 #PHP
php导出word文档与excel电子表格的简单示例代码
Mar 08 #PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
Mar 08 #PHP
PHP_Cooikes不同页面无法传递的解决方法
Mar 07 #PHP
php function用法如何递归及return和echo区别
Mar 07 #PHP
You might like
第一个无线电台是由谁发明的
2021/03/01 无线电
留言板翻页的实现详解
2006/10/09 PHP
用文本文件制作留言板提示(上)
2006/10/09 PHP
JavaScript更改class和id的方法
2008/10/10 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
详解Python网络爬虫功能的基本写法
2016/01/28 Python
python线程、进程和协程详解
2016/07/19 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
python 提取文件指定列的方法示例
2019/08/07 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
环保专业大学生职业规划设计
2014/01/10 职场文书
先进集体事迹材料
2014/02/17 职场文书
主持词开场白
2014/03/17 职场文书
家长评语怎么写
2014/12/30 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
责任书格式
2019/04/18 职场文书
导游词之无锡梅园
2019/11/28 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python