Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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
我可以使用strotime(';now';)作为PHP中的唯一ID吗?_Php - Fatal编程技术网

我可以使用strotime(';now';)作为PHP中的唯一ID吗?

我可以使用strotime(';now';)作为PHP中的唯一ID吗?,php,Php,我是否可以在php应用程序中用作唯一ID,因为我假设它使用当前时间戳,将来无法生成相同的整数?我用于小型项目,如微博或cms。 此函数使用unix时间生成10位数字 如果你的项目没有biq,没有得到高要求或插入,你可以安全地使用它 $UniqID = time(); 它用10位数字创建ID,如(1462570078) 对于其他项目,我使用microtime多于time()或其他类似的uniq $m=microtime(true); echo sprintf("%8x%05x\n",floor(

我是否可以在php应用程序中用作唯一ID,因为我假设它使用当前时间戳,将来无法生成相同的整数?

我用于小型项目,如微博或cms。 此函数使用unix时间生成10位数字 如果你的项目没有biq,没有得到高要求或插入,你可以安全地使用它

$UniqID = time();
它用10位数字创建ID,如(1462570078)

对于其他项目,我使用microtime多于time()或其他类似的uniq

$m=microtime(true);
echo sprintf("%8x%05x\n",floor($m),($m-floor($m))*10000);

我用的是小项目,比如微博或cms。 此函数使用unix时间生成10位数字 如果你的项目没有biq,没有得到高要求或插入,你可以安全地使用它

$UniqID = time();
它用10位数字创建ID,如(1462570078)

对于其他项目,我使用microtime多于time()或其他类似的uniq

$m=microtime(true);
echo sprintf("%8x%05x\n",floor($m),($m-floor($m))*10000);

uniqid本身就是一个php函数,您可以这样

$uniq = uniqid();

您可以在这个

中添加更多的熵Uniq id本身就是一个php函数,您可以这样

$uniq = uniqid();

你可以在这个

中添加更多的熵不,不要这样做。虽然时间戳可能总是不同的,但这并不意味着它是唯一的。例如,如果同时发出两个请求,会发生什么情况?您将有两个相等的时间戳。在选择唯一ID时,必须确保不存在可能存在相等值的情况。一个好的解决方案是有一个自动递增字段。这将确保您的id永远不会相同。

不,不要这样做。虽然时间戳可能总是不同的,但这并不意味着它是唯一的。例如,如果同时发出两个请求,会发生什么情况?您将有两个相等的时间戳。在选择唯一ID时,必须确保不存在可能存在相等值的情况。一个好的解决方案是有一个自动递增字段。这将确保您的id永远不会相同。

使用
strotime('now')
作为id是不安全的

请看下面的代码:

$now = strtotime('now');
$anotherNow = strtotime('now');
$sameCounter = 0;
while($anotherNow == $now){
    $sameCounter++;
    $anotherNow = strtotime('now');
}

echo $sameCounter; //8558
结果是8558,非常不安全,php在那一秒进行了8558次操作
您很有可能多次获得相同的ID


您可以改用
uniq
函数

strotime('now')
用作id是不安全的

请看下面的代码:

$now = strtotime('now');
$anotherNow = strtotime('now');
$sameCounter = 0;
while($anotherNow == $now){
    $sameCounter++;
    $anotherNow = strtotime('now');
}

echo $sameCounter; //8558
结果是8558,非常不安全,php在那一秒进行了8558次操作
您很有可能多次获得相同的ID


您可以使用
uniq
函数来代替

我很难找到重复的,您可以在用户名前面加前缀 像这样回显“$username-”.time();或“$username.time();或“$userid-”.time()

在php中已经有
uniqid

函数的作用是:根据微时间生成一个唯一的ID (以微秒为单位的当前时间)


欲了解更多信息,请访问官方网站

我的网站。如果我们很难获得副本,您可以在用户名前加前缀 像这样回显“$username-”.time();或“$username.time();或“$userid-”.time()

在php中已经有
uniqid

函数的作用是:根据微时间生成一个唯一的ID (以微秒为单位的当前时间)


有关更多信息,请参考官方网站

什么是两个PHP请求同时执行?这是几秒钟,而不是几毫秒,太多的不安全的迷你项目我用这个,有疑问的是不定义项目是大还是小,但你是对的问题是,“使用
时间
作为id安全吗”,您刚才说您正在使用
时间
,但没有解释为什么它是安全的\n安全的两个PHP请求在同一时间做什么?这是几秒钟而不是几毫秒,太多的不安全的小项目我用这个,问题是不定义项目是大是小,但你是对的问题是,“使用
时间作为id安全吗”,你只是说你在使用
时间
,没有解释为什么它是安全的\不安全的