很多站长朋友们都不太清楚php如何生成guid,今天小编就来给大家整理php如何生成guid,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 ASP/PHP中如何获得GUID字符串 2、 php GUID生成函数和类 3、 thinkphp怎么生成唯一标识 ASP/PHP中如何获得GUID字符串asp下生成guid的代码
<%
Dim objTypeLib
Set objTypeLib = CreateObject("Scriptlet.TypeLib")
Response.Write objTypeLib.Guid
%>
php下生成guid要用到class .
guid.class.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.php文件
<?php
require_once("guid.class.php");
$Guid = new Guid();
print $Guid->toString();
?>
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);
}
}
GUID类使用方法:
复制代码
代码如下:
require_once("guid.class.php");
$Guid
=
new
Guid();
$Guid->toString();
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;
}
关于php如何生成guid的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php如何生成guid php怎么制作的详细内容...