您的位置:首页 > 编程语言 > PHP开发

PHP生成唯一标识ID

2017-06-26 00:00 393 查看
1.不太好的方法

echo uniqid(); //13位的字符串
echo uniqid("PHP_"); //当然你可以加上前缀
echo uniqid("PHP_", true)."\n";////如果第二个参数more_entropy为true则生成23位字符串
echo md5(uniqid())."\n"; //这是第一种简单的方法,当然用sha1()函数也可以。
echo md5(time() . mt_rand(1,1000000))."\n";//第二种,利用时间戳的方法。

2.官方com_create_guid()参考手册有用户提供的方法,结果类似:{E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}

function guid(){
if (function_exists('com_create_guid')){
return com_create_guid();
}else{
mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
$charid = strtoupper(md5(uniqid(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;
}
}
echo guid();

3.官方uniqid()参考手册有用户提供的方法,结果类似:{E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: