在PHP中生成随机字符串:如何正确且安全地操作?
大家好!我是一名初学PHP开发者,正在编写我的第一个带用户注册功能的网站。我需要生成用于邮箱确认和临时密码的随机token。我在网上找到了一个简单的方法,但不确定它是否正确。
以下是我目前使用的代码:
```php
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
echo generateRandomString(32); // 例如:"a3F8kL9mN2..."
```
我注意到的问题:
1. 函数`rand()`——我读到它不是加密安全的。
2. 无法保证字符串的唯一性。
3. 不清楚如何使字符串仅包含字母或仅包含数字。
请告诉我如何在PHP中正确生成随机字符串?需要示例。