我想生成一个7号唯一ID,这是我要生成的函数。
function generate_guid($length){
$alphabet = '1234567890';
$tip = array();
$alphaLength = strlen($alphabet) - 1;
for ($i = 0; $i < $length; $i ++) {
$n = rand(0, $alphaLength);
$tip[] = $alphabet[$n];
}
return implode($tip);
}
现在这是我的注册功能
function create_user($email, $name, $country, $password){
$ipaddress = $_SERVER['REMOTE_ADDR'];
$guid = generate_guid(7);
$active = 0;
if (email_exists($email)) {
return false;
} else
if (name_exists($name)) {
return false;
} else {
$hashed_password = password_hash($password, PASSWORD_BCRYPT);
$db = dbconnect();
//MyQuery Code//
$stmt->close();
return true;
}
}
现在我能够生成并且能够检查用户名和电子邮件是否存在。我的问题是如何检查guid是否存在而没有错误并生成新的插入数据库?或者,如果某人有更好的建议。我想要完成的主要事情必须是7长度所有数字。
我读到了有关唯一身份证的信息,但它说不保证,也有信件。有更好的方法吗?
我遇到了这个但是aspx how to generate unique id per user?是否可以按顺序生成我的函数?
答案 0 :(得分:1)
试试这个:
function generate_guid($length){
$alphabet = '1234567890';
$tip = array();
do{
$uniqueId = substr(str_suffel($alphabet), 0, $length );
//check uniquekey in database like you check unique username
//something like that
$sql = 'select * from tablename where uniqueId = "'.$uniqueId.'"';//if your using PDO, bind accordingly
$result = mysqli_query($conn, $sql);
}while(mysqli_num_rows($result)); //if no rows, loop will break and you would get uniqu id in $uniqueId variable
return $uniqueId;
}
答案 1 :(得分:1)
您可以尝试使用PHP从int生成唯一的 https://gist.github.com/Sommerregen/78e5ea478aacfd382323
当哈希数字然后将$ len更改为7 你可以散列microtime或其他增量数字,以确保它是唯一的。