Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中生成唯一值_Php_Html_Function_Md5_Uniqueidentifier - Fatal编程技术网

在php中生成唯一值

在php中生成唯一值,php,html,function,md5,uniqueidentifier,Php,Html,Function,Md5,Uniqueidentifier,我正在考虑在php中生成5个字符的唯一字符串时使用的选项。或者如果有人有更好的选择。我不确定substr是否也会降低唯一性的可靠性。谢谢大家的建议 备选案文1: $unique_id=substr(md5(time()), -5); 或 备选案文2: $unique_id=substr(uniqid, -5); 这个内置的php函数可以帮助您 rand(min,max); 就我个人而言,我会选择第一个选项,但使用更像: md5(uniqid(rand(),true))正如@Sagar所说,

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

备选案文1:

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

备选案文2:

$unique_id=substr(uniqid, -5);

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

rand(min,max);

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


md5(uniqid(rand(),true))

正如@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
    }

您可以使用前三个字符的static,最后只嵌入两个字符。如果您使用random,则易于识别。然后,当没有大量数据时,则可能会与某些现有的oneSolution匹配。解决方案可能在此处-选项3:使用PHP,这正好可以实现,根据时间创建ID,请注意文档中的警告。这将不是唯一的吗?两个用户/字符串可以相同。如果存储在Db表中,则可以测试其副本。