【问题标题】:change password html form in php [closed]在php中更改密码html表单[关闭]
【发布时间】:2013-12-10 20:53:46
【问题描述】:

我正在尝试创建一个 html 表单来更改 php 中的密码。 我的数据库是在easyphp中创建的。

这是我写的更改密码的代码,当我测试它时没有发生任何变化。

<?
$user_name = "root";
$pass_word = "";
$database = "login";
$server = "127.0.0.1";

if(isset($_POST['submit']))
  {
    $oldpassword = md5($_POST['cur_password']);
    $newpassword= md5($_POST['new_password']);
    $confirm_password = md5($_POST['confirm_password']);
    $usermane = $_SESSION['username'];          

$con = mysqli_connect($server, $user_name, $pass_word,$database);

if (!$con)
 {
die('Could not connect: ' . mysqli_connect_error());
  }

  $select=mysqli_query("select * from login where L1='$username'"); 

  $fetch=mysqli_fetch_array($select);
  $data_password=md5($fetch['password']);

  if($newpassword==$confirm_password && $data_password==$oldpassword)
    {
  $insert=mysqli_query("update login set L2='$confirm_password' where L1='$username'"); 
  }

  if($insert)
  {

   echo "Password changed";
    }
  else
    {
      echo "Password  not changed";
    }

  }
    }
     mysqli_close($con);

 ?>

<html>
<head>
</head>
<body>
<FORM NAME ="form1" METHOD ="POST" ACTION ="changepassword.php">
 <p>old password<br />
 <input type="password" name="current_password" /></p>
 <p>New password<br />
 <input type="password" name="new_password"/>
  </p>
  <p>Confirm password<br />
  <input type="password" name="confirm_password"/>
  </p>
  <input name="submit" type="submit" value="Save Password"  />
  </body>
  </html>

请告诉我这里出了什么问题。

谢谢:D

【问题讨论】:

  • 您需要进行基本故障排除,隔离问题,然后返回并提出具体问题。转储代码并说它不起作用是不够的。
  • $data_password=md5($fetch['password']); - 密码是否已经写入数据库???如果是,你不需要在这里做 md5
  • 你能告诉我你最后发生了什么吗?不更新密码或其他什么?您的文件名也是“changepassword.php”吗?尝试将表单的操作值留空。喜欢 Action=""
  • @leemo - “用 JS 散列它们” 我希望 JS 并不意味着 Javascript
  • 这个问题似乎是题外话,因为它是关于基本调试的。

标签: php html mysql mysqli


【解决方案1】:

$usermane 在第 12 行。看起来像语法错误。你不应该得到任何错误吗?

【讨论】:

  • 这应该是评论而不是答案
  • @robbmj - 鉴于问题的质量很差,我认为这是一个足够的答案。
【解决方案2】:

还有用户名和用户名不匹配

 $usermane = $_SESSION['username'];          

 $select=mysqli_query("select * from login where L1='$username'"); 

【讨论】:

    【解决方案3】:

    改变

    $data_password=md5($fetch['password']);
    

    $data_password=$fetch['password'];
    

    您已经将密码存储为哈希(至少根据您的插入语句),当您获取哈希的哈希时,您只会得到一个新的哈希。

    导致 $data_password 不等于 $oldpassword

    if($newpassword==$confirm_password && $data_password==$oldpassword)
    {
        $insert=mysqli_query("update login set L2='$confirm_password' where L1='$username'"); 
    }
    

    也正如 Eisa Adil 指出的那样

    $usermane 
    

    应该是

    $username
    

    【讨论】:

    • 感谢大家的回答和cmets,我会根据您的回复尝试解决问题。 :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2014-05-25
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    相关资源
    最近更新 更多