random_int() 函数生成一个加密安全的伪随机整数。该函数使用操作系统的随机数发生器(如 /dev/urandom 或 CryptGenRandom),适用于安全敏感场景(如令牌生成、密码重置链接、密钥生成等)。
rand() 或 mt_rand() 不同,random_int() 生成的随机数不可预测,适合加密安全用途。如果系统没有可用的随机源,函数会抛出 Random\RandomException(PHP 8.0 前为 Exception)。
random_int(int $min, int $max): int
| 参数 | 描述 |
|---|---|
min |
必需。规定返回的最小值(必须 ≤ max)。 |
max |
必需。规定返回的最大值。 |
返回 min 到 max 之间(包含)的一个加密安全随机整数。
<?php
// 生成 1 到 100 之间的安全随机数
$secureRand = random_int(1, 100);
echo $secureRand;
?>
输出(示例):
42
<?php
function generateToken($length = 32) {
$token = '';
for ($i = 0; $i < $length; $i++) {
$token .= chr(random_int(33, 126)); // 可打印 ASCII 字符
}
return $token;
}
echo "CSRF 令牌: " . generateToken();
?>
输出(示例):
CSRF 令牌: 8K#mP@qR!tL2xYzA5bC7dEfG
<?php
try {
$number = random_int(1, 10);
echo "随机数: $number";
} catch (Random\RandomException $e) {
echo "随机数生成失败: " . $e->getMessage();
}
?>
输出(正常情况下):
随机数: 7
random_int() 适用于加密安全场景,但性能比普通随机函数稍慢。对于非安全场景(如模拟、游戏),可以使用 mt_rand()。Random\RandomException(PHP 8.0+)或 Exception(PHP 7.x)。min 和 max 必须是整数,且 min ≤ max,否则会抛出错误。Random\Randomizer 类中,但作为全局函数仍然可用。