×

phpcreateguid

phpcreateguid的简单介绍

admin admin 发表于2023-04-04 07:53:07 浏览45 评论0

抢沙发发表评论

本文目录一览:

php GUID生成函数和类

一、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); -phpcreateguid

}

}

GUID类使用方法:

复制代码

代码如下:

require_once("guid.class.php");

$Guid

=

new

Guid();

print

$Guid-toString();

thinkphp订单号怎么生成

PHP 生成订单号,GUID 方法

生成订单号

function build_order_no() {  

  return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);-phpcreateguid

}

生成GUID

function guid() {  

  if (function_exists('com_create_guid')) {      

      return com_create_guid();  

  } else {  

      mt_srand((double)microtime()*10000);

      $charid = strtoupper(md5(uniqid(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;  

  }

}

thinkphp怎么生成唯一标识

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

这种方法有一定的概率会出现重复

2、php内置函数uniqid()

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.

w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数"。

3、官方uniqid()参考手册有用户提供的方法,结果类似:{E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}

public function create_guid($namespace = '') {

static $guid = '';

$uid = uniqid("", true);

$data = $namespace;

$data .= $_SERVER['REQUEST_TIME'];

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

$data .= $_SERVER['LOCAL_ADDR'];

$data .= $_SERVER['LOCAL_PORT'];

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

$data .= $_SERVER['REMOTE_PORT'];

$hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));

$guid = '{' .

substr($hash, 0, 8) .

'-' .

substr($hash, 8, 4) .

'-' .

substr($hash, 12, 4) .

'-' .

substr($hash, 16, 4) .

'-' .

substr($hash, 20, 12) .

'}';

return $guid;

}