1,建立php類庫檔案-guid.php
// guid.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 getHost($coumputer_name, $ip) { // static
$address = new NetAddress();
$address->name = $coumputer_name;
$address->ip = $ip;
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($computer_name, $ip){
$this->getGuid($computer_name, $ip);
}
//by www.jbxue.com
function getGuid($coumputer_name, $ip){
$address = NetAddress::getHost($coumputer_name, $ip);
$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);
}
}
?>
2,調用示例,生成唯一的Gid:
require_once('guid.php'); //調用類庫檔案
$computer_name = $_SERVER["SERVER_NAME"];
$ip = $_SERVER["SERVER_ADDR"];
$guid = new Guid($computer_name, $ip);
print $guid->toString();
//輸出結果:3238D32E-807C-B1C4-01C4-FD1346D32110
?>