当前位置:首页 » 编程语言 » php唯一标识

php唯一标识

发布时间: 2023-08-22 16:59:26

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();
print
$Guid->toString();

Ⅱ PHP能否获取客户端唯一标识(cpu序列号,mac地址等)

权限足够的情况下,可以输出cpu信息php调用:$a = exec('cat /proc/stat'); php有个执行方式是用``包裹字符串,同样可以在系统上直接执行 同样需要足够的权限。

Ⅲ php可以获取到手机号或者唯一标识吗

获取不到,但是可以尝试用cookie一类的给用户做标记

Ⅳ PHP可以获取到手机号或者唯一标识吗

可以,用is_numeric 和strlen 函数来写,最后用正则来判断是否为手机号码,是手机号码就获取


用 is_numeric 判断是否为数字

用 strlen 判断长度是否为11位数或12位数,12位数判断第一位数是否为0,基本上打外省电话需要在号码前加0

$text='15812345678';
$search='/^(1(([35][0-9])|(47)|[8][0126789]))d{8}$/';
if(preg_match($search,$text)){
echo'手机完全符合';
}else{
echo'手机格式不符合';
}

Ⅳ php如何获取客户端唯一标识符IPmac地址

<?php
classGetMacAddr{
var$return_array=array();//返回带有MAC地址的字串数组
var$mac_addr;
functionGetMacAddr($os_type){
switch(strtolower($os_type)){
case"linux":$this->forLinux();break;
default:$this->forWindows();break;
}
$temp_array=array();
foreach($this->return_arrayas$value){
if(preg_match("/[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f]/i",$value,$temp_array)){
$this->mac_addr=$temp_array[0];
break;
}
}
unset($temp_array);
return$this->mac_addr;
}
functionforWindows(){
@exec("ipconfig/all",$this->return_array);
if($this->return_array)
return$this->return_array;
else{
$ipconfig=$_SERVER["WINDIR"]."system32ipconfig.exe";
if(is_file($ipconfig))
@exec($ipconfig."/all",$this->return_array);
else
@exec($_SERVER["WINDIR"]."systemipconfig.exe/all",$this->return_array);
return$this->return_array;
}
}
}
//---实例化类
$mac=newGetMacAddr(PHP_OS);
echo$mac->mac_addr;
echo"<br/>";
echomd5($mac->mac_addr);
?>
以上代码是获取mac地址的代码,在网上抄的,但实测有效,括号,我x,我第一次知道原来php也可以执行命令行。。。

至于如何限制,应该是去截取mac的一部分经行if判断就可以了,你先尝试一下

热点内容
卸载linux软件 发布:2025-03-16 03:19:07 浏览:808
太平天国迅雷下载ftp 发布:2025-03-16 03:13:19 浏览:64
服务器硬盘温度怎么调节 发布:2025-03-16 03:11:47 浏览:74
netcore编译前执行代码 发布:2025-03-16 03:05:17 浏览:475
饥荒联机版服务器搭建程序 发布:2025-03-16 02:55:18 浏览:684
win7如何访问共享 发布:2025-03-16 02:55:14 浏览:37
centosphp升级 发布:2025-03-16 02:42:04 浏览:52
绝地求生体验服为什么服务器已满了 发布:2025-03-16 02:42:03 浏览:706
服务器电脑机房是干嘛的 发布:2025-03-16 02:30:47 浏览:489
龙贝格算法c语言 发布:2025-03-16 02:26:28 浏览:102