flucont / btcloud

PHP开发的宝塔面板第三方云端
MIT License
1.77k stars 653 forks source link

php7.4正常 ,php 8.2下报错 #104

Open msycn opened 1 year ago

msycn commented 1 year ago

md5(): Passing null to parameter #1 ($string) of type string is deprecated ThinkPHP V6.1.1 { 十年磨一剑-为API开发设计的高性能框架 } - 官方手册

msycn commented 1 year ago

在 ThinkPHP V6.1.1 中,当将空值传递给 md5() 函数的第一个参数时,会产生警告,提示“传递 null 给类型为字符串的第一个参数 #1($string)已弃用”。

这是因为在 PHP 8 中,将空值传递给某些字符串函数(例如 md5() 和 strlen())被认为是不安全的行为。因此,您需要在传递参数之前检查值是否为 null。

以下是一个示例,使用 null 合并运算符(??)来检查参数的值,如果为 null,则提供一个默认值:

php Copy code $str = null; $hash = md5($str ?? ''); 在这个例子中,如果 $str 为 null,将使用一个空字符串作为默认值。

另外,如果您的应用程序需要使用密码哈希函数,请考虑使用 PHP 的密码哈希函数(例如 password_hash() 和 password_verify()),而不是 md5() 函数。密码哈希函数提供更安全的哈希算法,以及自动使用随机 salt,帮助保护用户密码。