【问题标题】:Generate unique user id in PHP在 PHP 中生成唯一的用户 ID
【发布时间】:2018-04-14 14:28:14
【问题描述】:

我正在使用 Laravel 开发一个应用程序,它具有注册用户的功能。 我想为每个用户提供自定义的唯一 ID(即:User_id = SM129)。 Userid 将具有以下功能: 1) 注册时会自动生成用户ID。 2) 自动生成的用户 ID 应检查到数据库的唯一性。

目前,我正在使用以下代码根据当前日期生成唯一用户 ID。但是这样的用户名可能会出现重复。请帮忙

<?php
//creates a unique id for user id 
echo "<br>";
$day = date('D');
$month = date('F');
$year = date('Y');
$fmonth = substr($month, 0, 1);
$fyear = substr($year, 2, 2);
$fday = substr($day, 0, 1);
$uniq = rand();
$funiq = substr($uniq, 0, 2);
$funiq1 = substr($uniq, 0, 1);
$joint=  'ST'.$fmonth.$fday.$funiq1.$fyear.$funiq ;
?>

<input type="text" name="username" value = "<?php echo $joint; ?>">

【问题讨论】:

  • 应该类似于 this 但您需要创建一个查询来检查数据库中是否已经存在该号码
  • 这也是一种方式,但更能说服 UUID。谢谢 Hungrykoala 的回答。
  • 在您的数据库中使用自动递增且唯一的 int 字段怎么样?
  • 喜欢默认的 id 字段?如果它允许我在其中附加一些字符串,这个函数会很好。喜欢:Sep100,Sep101

标签: php mysql laravel date format


【解决方案1】:

如果您要在 Laravel 应用程序中实现 UUID,看起来实际上会更好:

https://medium.com/@steveazz/setting-up-uuids-in-laravel-5-552412db2088

UUID 是“通用唯一标识符”的缩写,它是一组 36 个字符,包含字母和数字。每组都应该是独一无二的,每 100 年只有一次机会重复,您可以在此处和此处阅读更多相关信息并查看一些很酷的统计数据。

也不要在您的输入上输入值 - 生成唯一 ID 服务器端(在您的控制器/模型中)。

如果您在输入中保留唯一值,则不会阻止用户实际更改该值。

【讨论】:

  • '每一组都应该是独一无二的,每100年只有一次机会重复',这听起来很有说服力。谢谢大佬解答。
  • 我想我认为我们在这里有些困惑,长用户 id,例如“id”:“b14e5c00-e899–11e5–9c37-df062687ba4f”,很难作为用户提供给用户ID。我也想让它又短又甜,
  • 在这种情况下,在用户提交后检查用户是否存在(通过电子邮件/其他标识符)不是更容易吗?
  • 是的,我认为这将适用于我的情况:phppot.com/jquery/…
猜你喜欢
  • 1970-01-01
  • 2010-11-17
  • 2012-03-28
  • 2010-12-11
  • 2014-05-26
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
  • 2023-04-03
相关资源
最近更新 更多