php唯一標識
Ⅰ 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判斷就可以了,你先嘗試一下