GUID,UUID

<?
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);
                }
}
?>

引用:

include"上面文件";
$Guid = new Guid();
$id = $Guid->toString();
时间: 2024-12-25 07:37:51

GUID,UUID的相关文章

跨平台生成GUID/UUID

#ifndef XGUID_H#define XGUID_H #include <string>#include <stdio.h>#ifdef WIN32#include <objbase.h>#else#include <uuid/uuid.h> typedef struct _GUID{    unsigned long Data1;    unsigned short Data2;    unsigned short Data3;    unsign

loadrunner生成随机uuid的方法

在globals.h中定义方法: char* lr_guid_gen(char* paramName){ //生成GUID方法 typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[8]; } GUID; GUID m_guid; char buf[50]; char pNameStr[50]; CoCreateGuid(&m_guid

boost uuid

uuid: uuid库是一个小的使用工具,可以表示和生成UUID UUID是University Unique Identifier的缩写,它是一个128位的数字(16字节),不需要有一个中央认证机构就可以创建全国唯一的标示符.别名:GUID uuid位于名字空间boost::uuisd,没有集中的头文件,把功能分散在了若干小文件中,因此为了使用uuid组件,需要包含数个头文件,即:#include <boost/uuid/uuid.hpp>#include <boost/uuid/uu

HTTP的REST服务简介

REST简介 一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. 在您将看到的这一篇文章中,我们将对REST,尤其是基于HTTP的REST服务进行详细地介绍.通过这些文章,您不仅可以了解到什么是REST,更能清晰地了解到您在编写REST服务时所需要遵守的各个守则,设计RESTful API时需要考虑的各种因素以及实现过程中可能遇到的问题等内容. R

CloudNotes之领域建模篇:领域模型简介

CloudNotes领域模型还是相对简单的,并不一定需要采用面向领域驱动的设计方法来解决CloudNotes的领域问题.但出于以下几个方面的原因,我还是采用了面向领域驱动的方式来开发CloudNotes: 领域驱动是企业级应用开发的一种指导性模型,以领域模型作为软件开发的中心,符合解决问题的基本思路 现有的企业级应用开发框架对面向领域的开发模式支持得越来越好,如果选用这种方式,可以在CloudNotes中更好地利用这些框架的最新功能,为系统开发寻求新的机遇 自己对领域驱动设计相对比较熟悉,而且也

.NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制

项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩过webAPI,但是领导要求必须用这个(具体原因鬼知道),只好硬着头皮上了. 最近刚做完权限这一块,分享出来给大家.欢迎各种吐槽批判践踏... 先说说用户身份的识别,简单的做了一个token机制.用户登录,后台产生令牌,发放令牌,用户携带令牌访问... 1.cache管理类,由于博主使用的HttpRuntime.Cache来存储token,IIS重启或者意外关闭等情况会造成cache清空,只好在数据库做了cache

分布式数据库中全局唯一主键

[相关文章] <分布式数据库中全局唯一主键生成策略的设计与实现><activiti5.10解决分布式集群部署的主键问题><分布式环境下数据库主键方案><如何在高并发分布式系统中生成全局唯一Id><分布式环境下ID生成方法总结> <分布式环境下数据库主键方案> [ http://www.2cto.com/database/201309/243195.html ] 在只使用单数据库时,使用自增主键ID无疑是最适合的.但在集群.主从架构上时

关于拖库和撞库的思考与对策

拖库是指黑客盗取了网站的数据库.撞库是指黑客用拖库获得的用户名和密码在其它网站批量尝试登陆,进而盗取更有价值的东西.由于一些用户在多个网站用相同的用户名和密码,所以撞库是有一定成功率的.现在稍微有点责任感的网站都不会将密码明文保存在数据库中,起码会做一次MD5.要想撞库,必须得知道密码的明文,也就是用户真正输入的密码.我们知道MD5算法是不可逆的,黑客是怎么弄到密码明文的呢?最常用的办法就是MD5字典. MD5字典是什么?其实就是提前将一些比较简单的密码(比如10位以内的纯数字)做MD5运算,将

WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制

.NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制 项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩过webAPI,但是领导要求必须用这个(具体原因鬼知道),只好硬着头皮上了. 最近刚做完权限这一块,分享出来给大家.欢迎各种吐槽批判践踏... 先说说用户身份的识别,简单的做了一个token机制.用户登录,后台产生令牌,发放令牌,用户携带令牌访问... 1.cache管理类,由于博主使用的HttpR