首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止更新表单中密码字段的重复MD5?

问如何防止更新表单中密码字段的重复MD5?
EN

Stack Overflow用户
提问于 2011-03-31 05:24:29
回答 3查看 325关注 0票数 2

在我的用户信息更新表单上,我允许用户更新通行证和其他内容。如果他们不想更新表单中的密码,则将其留空,就像在字段中留空一样。在process页面上,如果该字段为空,我将从数据库(其md5)插入他们现有的密码,如果他们更改了密码,我希望输入新密码。下面是我尝试实现的方法,但无论如何它都是双md5-ing:

代码语言:javascript
复制
      if (!get_magic_quotes_gpc()) {

$newpass = mysql_escape_string($_POST['password']);
$newpass = md5($_POST['password']);

    }

    // If $dob is empty
    if (empty($newpass)) {

    $newpass = "$passis"; //$passis = the password stored in db which is md5
        }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-31 05:33:21

只是稍微修改一下你的代码:

代码语言:javascript
复制
  $newpass = $_POST['password'];

  if (!get_magic_quotes_gpc()) {
      $newpass = mysql_escape_string($newpass);
  }

  if(empty($newpass)) {
    $newpass = "$passis"; //$passis = existing md5'd password already stored in db
  }
  else {
    $newpass = md5($newpass); //$newpass = newly provided password needs to be md5'd before updating db
  }     
票数 1
EN

Stack Overflow用户

发布于 2011-03-31 05:28:02

因为md5会将空字符串转换为散列,所以$newpass永远不会为空。所以这个条件不会起作用:if (empty($newpass)) {

相反,你必须这样做

代码语言:javascript
复制
 if (empty($_POST['password'])) {

更新

代码语言:javascript
复制
 if (!get_magic_quotes_gpc()) {

$newpass = mysql_escape_string($_POST['password']);
$newpass = md5($_POST['password']);

}

// If $dob is empty
if (empty($_POST['password'])) { 
   $newpass = "$passis"; //$passis = the password stored in db which is md5
}
票数 2
EN

Stack Overflow用户

发布于 2011-03-31 05:40:49

您的代码很奇怪,因为只有在设置了magic_quotes_gpc指令时,它才会执行md5。

另一种想法是空字符串的md5不是空字符串。

下面是一个可以更好地工作的代码:

代码语言:javascript
复制
$newpass = isset($_POST['password']) ? $_POST['password'] : '';
if ($newpass=='') {
  $newpass = $passis; // $passis = the password stored in db which is md5
} else {
  if (get_magic_quotes_gpc()) $newpass = stripslashes($newpass); // take off slashes added by PHP if any
  $newpass = md5($newpass);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5492625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档