【问题标题】:Generating a unique value in php [duplicate]在php中生成唯一值[重复]
【发布时间】:2015-05-23 07:24:29
【问题描述】:

我正在考虑在 php 中生成 5 个字符的唯一字符串的选项。或者,如果有人有更好的选择。我不确定 substr 是否真的会降低唯一性的可靠性。感谢所有建议。

选项1:

$unique_id=substr(md5(time()), -5);

选项2:

$unique_id=substr(uniqid, -5);

【问题讨论】:

  • 你可以使用前三个字符静态,最后只嵌入两个字符,如果你使用随机,那么很容易识别,然后当没有数据很大时,它可能与一些匹配现有的
  • 选项 3:使用 PHP 的 uniqid(),正是这样做的,根据时间创建一个 ID,只需注意文档中的警告。

标签: php html function md5 uniqueidentifier


【解决方案1】:

这个内置的 php 函数可以帮助你。

rand(min,max);

【讨论】:

  • 这不会是唯一的吧?两个用户/字符串可以相同。
  • 如果你存储在 Db 表中,那么你可以测试它的副本。
【解决方案2】:

我个人会选择第一个选项,而是使用更像:

md5(uniqid(rand(), true))

【讨论】:

    【解决方案3】:

    正如@Sagar 所说,使用

    rand(min,max);
    

    然后将值存储在数据库中。在为用户提供随机数之前,请检查它是否已存在于数据库中。如果没有,请继续并插入数据库。

    类似这样的:

    $rand = rand(min,max);
    
        $sql = "SELECT randomNum FROM users WHERE randomNum = '$rand'";
        $result = mysql_query($sql);
        $count = mysql_num_rows($result);
    
        if ($count != 1){
            //insert to database
        }
    

    【讨论】:

      猜你喜欢
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 2017-04-06
      • 1970-01-01
      • 2021-09-16
      • 2017-04-23
      相关资源
      最近更新 更多