【问题标题】:Md5 inside a for loop PHP在 for 循环 PHP 中的 Md5
【发布时间】:2017-07-19 00:42:55
【问题描述】:

我有一个带有示例用户数组的 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。所以我的问题是,如何在没有返回的循环中执行一次 md5 并获得唯一的 md5 值?

【问题讨论】:

  • 为什么在这里循环并尝试使用哈希而不是 md5。
  • md5() 不再是安全的了,请改用password_hash()pasword_verify()md5() 现在很容易被解密。
  • @Nytrix 这只是为了学习登录

标签: php mysql for-loop hash md5


【解决方案1】:

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

这应该符合您的预期:

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

更新

如果您出于某种原因需要该循环,只需在循环之前创建 md5。我将 $y 的初始化更改为 0,因为当 $num_fields 设置为 3 时,循环 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 不再保存。但是如果只是为了学习如何创建登录或不需要高安全性的项目,那没关系。

【讨论】:

  • @MarkValenzuela 如果可行,请您接受所提供的答案吗?你知道,这个网站就是以此为基础的。
猜你喜欢
  • 1970-01-01
  • 2019-03-12
  • 2015-01-28
  • 2013-06-12
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
相关资源
最近更新 更多