for 循环中的 Md5 PHP

Md5 inside a for loop PHP

我有一个带有示例用户数组的 for 循环,我想对密码进行 md5,但问题是,它对密码进行了两次哈希处理。我只想要一次 md5($_POST[2]);

    user([userid, username, password]); 

    $num_fields =3; 
     for ($y = 1; $y < $num_fields; $y++) {
           $password = md5($_POST[2]);
           $_POST[2] = $password;
            }

密码输入示例为user,输出为

ee11cbb19052e40b07aac0ca060c23ee0d8d5cd06832b29560745fe4e1b941cf

而不是

ee11cbb19052e40b07aac0ca060c23ee 

我的解决方案是

   for ($y = 1; $y < $num_fields; $y++) {
          $password = md5($_POST[2]);
          $_POST[2] = $password;
          return $_POST[2];
            }

但我不想要 return $_POST[2]; 并为了 mysql 在循环内插入目的而中断循环。所以我的问题是,如何在没有 return 的情况下循环一次 md5 并获得唯一的 md5 值?

你不需要循环。您不使用 $y 变量。条件中的变量 $num_fields 使循环 运行 两次(对于 $y 等于 1 和 2)。

这应该符合您的预期:

user([userid, username, password]); 
$password = md5($_POST[2]);
$_POST[2] = $password;

更新

如果您出于某种原因需要该循环,只需在循环之前创建 md5。我将 $y 的初始化更改为 0,因为当 $num_fields 设置为 3 时,循环三次更有意义。但是你可以有我从示例中看不到的原因。

user([userid, username, password]); 

$password = md5($_POST[2]);
$_POST[2] = $password;
$num_fields = 3;

for ($y = 0; $y < $num_fields; $y++) {
    // Anything you wanted to loop
}

正如@nitrix 所说,md5 不再保存。但如果只是为了学习如何创建登录或不需要高安全性的项目,那么就可以了。