【发布时间】:2010-12-26 18:04:02
【问题描述】:
这是问题I posted here 的后续问题。
我正在使用以下代码给用户一个唯一的 id:
function NewGuid() {
$s = strtoupper(uniqid(rand(),true));
$guidText = substr($s,0,8) . '-' . substr($s,8,4) . '-' . substr($s,12,4). '-' . substr($s,16,4). '-' . substr($s,20); return $guidText;
}
$Guid = NewGuid();
echo $Guid;
$alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
function base_encode($num, $alphabet) {
$base_count = strlen($alphabet);
$encoded = '';
while ($num >= $base_count) {
$div = $num/$base_count;
$mod = ($num-($base_count*intval($div)));
$encoded = $alphabet[$mod] . $encoded;
$num = intval($div);
}
if ($num) $encoded = $alphabet[$num] . $encoded;
return $encoded;
}
function base_decode($num, $alphabet) {
$decoded = 0;
$multi = 1;
while (strlen($num) > 0) {
$digit = $num[strlen($num)-1];
$decoded += $multi * strpos($alphabet, $digit);
$multi = $multi * strlen($alphabet);
$num = substr($num, 0, -1);
}
return $decoded;
}
echo base_encode($Guid, $alphabet);
因此,如果生成的 id 已在使用中,我希望此代码能够重复,直到生成全新的 id 并将其输入数据库。另外我是编程新手,所以请随时详细说明;)
有什么想法吗?谢谢。
【问题讨论】:
-
请正确格式化您的代码。
标签: php mysql function uniqueidentifier