php GUID生成函数和类

php GUID生成函数和类,第1张

一、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的优点
1GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。
2世界上的任何两台计算机都不会生成重复的
GUID
值。
3需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。
4GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。
三、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_classphp
复制代码
代码如下:
<php
class
System
{

function
currentTimeMillis()

{

list($usec,
$sec)
=
explode("
",microtime());

return
$secsubstr($usec,
2,
3);

}
}
class
NetAddress
{

var
$Name
=
'localhost';

var
$IP
=
'127001';

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
$tmprand(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("guidclassphp");
$Guid
=
new
Guid();
print
$Guid->toString();

这种情况是主板BIOS开启了网络启动导致的,后面应该还有DHCP
解决的方法如下:
一、只要等待网卡自检过去即可进入系统。
二、通过BIOS关闭网络唤醒功能即可。
1、开机按F2键进入BIOS界面。
2、选择"Power Management Setup ”按回车。
3、选择“Wake up Events”,将“ Wake up by LAN”(网络唤醒)选项设置为Disable。
4、最后按F10键,直接按回车后重启电脑即可。

一、 现有方案

1、UDID(Unique Device Identifier)

获取方法:[[UIDevice currentDevice] uniqueIdentfier]

不足:iOS5之后,该方法返回的结果在所有应用中都相同,并且卸载应用、刷机、还原设备均不会发生改变,该方法被标记为废弃!最终,在2013年5月1号之后,AppStore禁止任何使用该方法的应用上架。iOS7中对外公开的API中已经移除了该方法!

2、保存在NSUserDefault中的UUID

获取方法:>你好,首先你的机子识别的是GPT分区(全称全局唯一分区表 GUID Partition Table)的结构,而不是GUID,GUID是全局唯一标识符。还有不是不能识别MBR,只是你的BIOS为UEFI的。如果想让它识别MBR,只需进入BIOS,在BOOT项里,将UEFI改为Legacy Bios即可。不过legacy Bios不支持GPT的分区。还有UEFI的不支持NTFS的U盘格式引导安装系统的。32位的系统也不支持UEFI。MBR转GPT的分区。最好用diskpart,不过要用diskpart将硬盘做成GPT的分区结构,那么硬盘里的数据就会丢失了、建议备份!。要 *** 作到命令行。还有UEFI的BIOS一般用来配合UEFI+GPT+win8的,可以快速开机(UEFI的BIOS免去了自检,一定程度上说加快开机。)希望帮到你吧!如果满意!请采纳哦!

BT全名为BitTorrent,是一个p2p软件,你在下载download的同时,也在为其他用户提供上传upload,因为大家是“互相帮助”,所以不会随着用户数的增加而降低下载速度。
下面是一般用ftp,>就是专门帮别人服务的账号
服务器ID是服务器的唯一标识,一个服务器ID对应一个服务器。每个服务器运营方均有自己专门的服务器ID。
找到服务器ID方法1:
点击主页面左上方三横杠点击左下角的设置按钮。
点击进入切换账号界面查询服务器ID。
方法2:点击主页面左上方三横杠点击左下角的设置按钮。
点击退出登录。
服务器ID会显示在登录企业密信正下方。

如何获取客户端的唯一标识信息
首先服务端就排除了,因为可以用多个用户登录。
然后看客户端有什么办法,只能是采用客户端存储的方式
1、cookie 这个你排除了,可能是因为清除cookie比较容易 *** 作。但这也是一种办法。
2、客户端的dom存储,这个有一定的局限,只有新的浏览器支持。而且同样可以删除。
3、插件方式,这个需要客户安装,一般不可能,但可以利用比较流行的安装率比较高的插件,例如flash,采用flash的本地存储记录。同样可以删除。
如果说用mac来唯一标识,但mac也是可以修改的
这个没有完美的解决方案,只能是尽力。

BT全名为BitTorrent,是一个p2p软件,你在下载download的同时,也在为其他用户提供上传upload,因为大家是“互相帮助”,所以不会随着用户数的增加而降低下载速度。
其实跟ED也十分相似,ED跟BT不同的地方有:
ED--要连上一个固定server BT--没有固定server,只要分享者制作出该分享档案的torrent档公布出来便可
ED--分享的人越多速度越快 BT--种子seed越多速度越快
ED--世界性的分享 BT--团体性的分享(可做到速度保证)
ED--知道在分享者的user name &速度 BT--没显示使用者/分享者名字
比起其它的P2P软件,BT有个独特的地方,它存在一个中间的WEB服务器,就是我们在发布的时所填写的announce。该服务器提供了发布的统一管理,不像其它P2P软件那样到处去找哪些非常不稳定的个人服务器,相对起来让人安心的多。
该WEB服务器更大的作用是内网用户可以做 Send(下面会说明原理),这是其它软件无法做到的,但不好的地方是announce当机的时候就无法下载了。要知道P2P下载关键是要人气要高,announce停一下就搞到人气全没有了。
torrent 的作用
大家都知道我们要用BT下载 ,就要先下载一个torrent文件,这个文件到底有甚么呢:
首先是 announce 纪录了发布服务器的位置,让BT知道是哪个WEB服务器发布的,然后是一些文件信息,文件名,目录名,长度等等,最后是片段长度,和片段的 Sha1 校验码,(BT为了实现续传和文件校验,就把文件分成若干个片段),大家可以用写字板打看torrent文件看看,就是知道个大概,后面的乱码是片段 Sha1 校验码。
开始-续传的实现 sha校验
BT 打开一个 torrent文件后,先要你选择文件保存那里。然后判断文件不存在的话就建立新文件,存在的话就用 Sha1 校验码去校验文件---错误的就是还没下载的,这样就可以实现续传了,但128位校验,想不慢都不行
得到 peer
现在知道要下载甚么了,到那里下载呢这就要寻找有谁提供上传了,这里BT是通过WEB服务器来实现的,首先BT会通过分析 torrent 来得到下面一串网址:
[url]>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13231629.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-24
下一篇 2023-06-24

发表评论

登录后才能评论

评论列表(0条)

保存