如何在 PHP 中生成隨機字符串 [附示例]

已發表: 2020-11-24

PHP 在其發佈時代表Personalized Home Page 雖然它的進化歷程為行業提供了一個替代且更可接受(遞歸)的定義,即PHP:超文本預處理器,但關於 PHP 的真相是,它仍然比其他任何東西都更能吸收個性化的精神。

今天,PHP 是所有其他領先的服務器配置語言(例如 Microsoft 的 ASP(Active Server Pages))的首選、免費和開源替代品。 這種個性化方面的很大一部分是通過服務器端的 PHP解釋器實現的,它可以作為模塊守護進程可執行文件來實現

PHP 界面有助於管理以用戶為中心的重要數據,例如 UID(唯一標識符)、電子郵件地址、用戶名、密碼、機密聯繫信息等等。

許多(如果不是全部)世界領先的動態內容管理系統(包括 CMS 巨頭 WordPress)都是基於 PHP 的平台,允許以 PHP 可訪問數據庫的形式輕鬆創建和維護用戶記錄和內容記錄.

在本文中,我們將探討 PHP 的一個特定方面,它使管理員可以輕鬆填充創建新“用戶”所需的所有必填字段,而管理員和用戶的干預最少. 為此,管理員必須學習如何生成 PHP 隨機字符串,這就是我們將要介紹的內容。

閱讀: PHP 項目理念和主題

目錄

什麼是 PHP 隨機字符串?

PHP 隨機字符串是唯一的、隨機化的字母數字字符串,可在數組中用作文件名、隨機 URL 擴展名、密碼或身份驗證令牌(例如常見的 API 令牌和在 Facebook 的應用程序開發界面上看到的 API 秘密)。

頻繁的博主,尤其是那些使用 Medium 等平台發布作品的博主,每當他們發布新的故事或帖子時,都會看到這種隨機字符串生成的行為——基本域之後的 URL 擴展,通常是發布接口生成的任意字符串。

例如,在 URL https://medium.com/neli/shiring-revealing-the-best-kept-secret-of-ancient-indian-meditation-c37d87e3386b中,URL 的最後部分 ( c37d87e3386b ) 是隨機的生成的字符串 PHP 隨機字符串的其他簡單而重要的參考包括為 WordPress 上的所有新用戶帳戶生成的“默認”密碼。

越來越多的消費者互聯網平台也轉向使用 PHP 隨機字符串,以利用加密的力量來啟用“魔術鏈接”登錄。 如果您曾經使用過使用“魔術鏈接”登錄的基於雲的服務,那麼您已經熟悉 PHP 隨機字符串的生成和映射所提供的易用性、效率和增強的安全層。

如何生成 PHP 隨機字符串?

手頭的任務是編寫使用 PHP 生成隨機、字母數字和唯一字符串的代碼。 有四種不同的方式可以實現這一目標:

  1. 通過使用蠻力(隨機索引)——這是迄今為止實現 PHP 隨機字符串的最簡單但粗略的方法。
  2. 通過使用“散列”函數(PHP 隨機字符串的算法生成——與使用蠻力相比,這是一種更智能的方法)
  3. 通過使用內置的uniqid()函數(這很簡單,並利用內置的 PHP 功能為元素生成唯一標識符)
  4. 通過使用random_bytes()bin2hex() - 他生成加密安全的隨機字節,並為在線彩票、在線撲克遊戲和其他需要實時數字生成的平台提供驚人的功能,並在其核心中內置真正的隨機化。

另請閱讀: PHP 的職業機會

使用蠻力生成 PHP 隨機字符串

PHP中隨機字符串生成的蠻力概念是最容易理解和最容易實現的。 從廣義上講,蠻力方法可以用四個簡單的步驟來解釋:

  1. 將所有可能的字符組合在一起並將它們放在一個字符串中(這是字符串中所有允許字符的示例空間存儲庫)。
  2. 生成一個從 0(零)開始並擴展到字符串長度“-1”的“隨機索引”。
  3. 在當前索引位置打印一個字符。
  4. 如果 X 是您的字符串中需要的字符數(您想要的字符串長度),則在整個指令循環中總共重複步驟 1、2 和 3 X 次。

正如您在下面的示例代碼實現中所見,這是迄今為止在 PHP 中生成隨機字符串的最直接的方法。

示例代碼:

<?php

$n=10;

函數 getName($n) {

$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

$隨機字符串 = ”;

對於 ($i = 0; $i < $n; $i++) {

$index = rand(0, strlen($characters) – 1);

$randomString .= $characters[$index];

}

返回$隨機字符串;

}

迴聲 getName($n);

?>

必讀: PHP 面試問答

使用“散列”函數生成 PHP 隨機字符串

PHP 有一些被稱為“散列函數”的內置函數,例如md5 ()、 sha1 () 和hash ()。 這些函數可用於“散列”由特定算法定義的字符串,例如“sha1”、“sha256”和“md5”。 在所有這些函數中,參數是一個字符串,輸出是一個字母數字散列字符串(如下面的示例代碼所示)。

示例代碼:

<?php

$str=rand();

$結果 = md5($str);

回顯$結果;

?>

使用內置的“uniqid()”函數生成 PHP 隨機字符串

PHP 保留了其作為卓越個性化工具的價值,具有特殊的內置函數,例如 uniqid(),可用於生成從當前時間派生的“唯一 ID (UID)”,記錄在微秒(也稱為“微時間”)。

在默認語法下,uniqid() 函數始終返回一個字符串長度為 13 個字符的唯一字母數字字符串。 您可以使用下面的示例代碼來測試 uniqid() 方法的實現。

示例代碼:

<?php

$result = uniqid();

回顯$結果;

?>

使用 random_bytes() 和 bin2hex() 生成 PHP 隨機字符串

到目前為止,這是生成“偽隨機”字節然後將它們轉換為十六進制格式以在現有隨機化中添加一層加密的最先進安全的方式。

第一步是調用內置的random_bytes () 函數來生成密碼安全的隨機字節。 下一步是調用bin2hex () 函數,該函數將使用此二進制數據(字節數)作為參數,並生成相應的十六進制值作為輸出,這是一個完全可用且這在下面的示例代碼中得到了更好的解釋。

示例代碼:

<?php

$n = 20;

$result = bin2hex(random_bytes($n));

回顯$結果;

?>

接下來是什麼?

upGrad帶來了 PHP 編程以及 upGrad全棧開發軟件開發專業化的 PG 文憑 一個讓你成為全棧開發人員並學習構建一些很棒的應用程序的程序。 這是一個為期 12 個月的廣泛計劃,包括處理實時項目和任務,還培訓 15 種編程語言和工具。 除此之外,它還提供模擬面試和工作協助等全方位的職業支持。

踏上夢想的工作

升級和 IIIT-BANGALORE 的 PG 文憑全棧
了解更多