需要注意的是,這個函式執行速度相當慢,如果放在迴圈中,可能會讓你的腳本執行速度大幅降低。奇怪的是,如果以 uniqid('', true) 的方式執行,速度會快很多。
(PHP 4, PHP 5, PHP 7, PHP 8)
uniqid — 產生基於時間的識別碼
取得基於目前時間(精確到微秒)的識別碼,並以給定的 prefix
作為前綴,還可以選擇性地附加一個隨機產生的值。
此函式不會產生密碼學上安全的數值,且*不得*用於加密目的,或需要傳回值不可猜測的用途。
如果需要加密安全的隨機性,可以使用 Random\Randomizer 搭配 Random\Engine\Secure 引擎。對於簡單的應用場景,random_int() 和 random_bytes() 函式提供了一個方便且安全的 API,其底層由作業系統的 CSPRNG 支援。
此函式不保證回傳值的唯一性,因為該值基於目前的微秒時間,或者如果 more_entropy
為 true
,則會附加少量隨機資料到目前時間。
回傳基於時間戳記的字串識別碼。
此函式不保證回傳值的唯一性。
範例 #1 uniqid() 範例
<?php
/* 像是這樣的 uniqid:4b3403665fea6 */
printf("uniqid(): %s\r\n", uniqid());
/* 我們也可以為 uniqid 加上前綴,這與執行以下程式碼相同:
*
* $uniqid = $prefix . uniqid();
* $uniqid = uniqid($prefix);
*/
printf("uniqid('php_'): %s\r\n", uniqid('php_'));
/* 我們也可以啟用 more_entropy 參數,這在某些系統上是必需的,例如 Cygwin。這會使 uniqid()
* 產生像這樣的值:4b340550242239.64159797
*/
printf("uniqid('', true): %s\r\n", uniqid('', true));
?>
注意:
在 Cygwin 下,
more_entropy
必須設為true
才能使此函式正常運作。
需要注意的是,這個函式執行速度相當慢,如果放在迴圈中,可能會讓你的腳本執行速度大幅降低。奇怪的是,如果以 uniqid('', true) 的方式執行,速度會快很多。