【问题标题】:Changing a MYSQL user password by using PHP使用 PHP 更改 MYSQL 用户密码
【发布时间】:2013-06-24 08:13:00
【问题描述】:

我正在尝试为我的 MySQL 数据库用户创建一个简单的表单,以便他们可以更改数据库密码。到目前为止,我已经实现了以下文件,changepass.html - 密码更改表单页面,以及 pass.php,执行器 php。我不是专业的 PHP 编码器,因此我不能更进一步。我的代码没有验证用户名和/或当前数据库密码。

我想添加一个简单的检查来验证数据库中的用户名以及当前密码,因此它应该在进行任何更改之前验证它们。比如“错误:您的用户名不存在”和“错误:您当前的密码无效”

有人可以帮我解决这个问题吗?

我知道我的代码很危险,因此非常感谢您提出的安全建议。

非常感谢。

pass.html:

 <form method="POST" action="pas.php">
 <table>
 <tr>
 <td>Enter username:</td>
 <td><input type="text" size="10" name="username"></td>
 </tr>
 <tr>
 <td>Enter your password:</td>
 <td><input type="password" size="10" name="password"></td>
 </tr>
 </table>
 <p><input type="submit" value="Update Password">
 </form>

pas.php:

<?php

session_start();

//Database Information

$dbhost = "localhost";
$dbname = "mysql";
$dbuser = "root";
$dbpass = "rootpasswd";

//Connect to database

$conn = mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
mysql_select_db($dbname, $conn) or die(mysql_error());

$username = $_POST['username'];
$password = $_POST['password'];

  mysql_query("UPDATE mysql.user SET Password = PASSWORD('$password') WHERE User='$username'");
  echo("Thank You. Your Password has been successfully changed.");
?>

【问题讨论】:

  • 不要使用已弃用的mysql_* 函数。请改用 PDO 或 mysqli_。您的代码也很容易受到 SQL 注入的影响,并且您不检查是否允许用户更改密码。
  • 使用SET PASSWORD修改密码
  • 我会在解决验证问题时这样做。请为安全起见建议您更改代码?
  • 危险的人!

标签: php mysql change-password


【解决方案1】:

您只需使用用户输入的用户名/密码在 DB 上创建第一个验证。 如果它们存在并且很好:返回 true 否则返回 false。

如果为 true,则使用位置重定向页面上的用户以更改密码。如果为 false,则显示错误;)

【讨论】:

  • 这就是我在这里问的原因。
  • 我给了你答案。你需要什么?
  • 哦,好的,首先你必须创建一个带有表单的HTML页面来检查用户当前的登录/mdp。这个 html 表单将到达一个 .php,它将像这样检查数据库:“SELECT * FROM USER WHERE login=$login AND password=$password;”如果您在 HTML 页面上获得错误显示它。完成后,说出来;)你需要有关 HTML/PHP/MySQL 的基础,并不难。如果您需要帮助,尽管说出来,但请尝试自己做。
【解决方案2】:

你可以用这个:-

$result = mysql_query("UPDATE mysql.user SET Password = PASSWORD('$password') WHERE User='$username'");
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

【讨论】:

    【解决方案3】:

    试试这个,这对sql注入也有帮助。

    $query = sprintf("UPDATE mysql.user SET Password = '%s' WHERE User='%s'",mysql_real_escape_string($password),mysql_real_escape_string($username));
    $result = mysql_query($query);
    if($result){
       echo "change success";
    }
    

    请注意:mysql_query 在 php 5.5.0 上已正式弃用。因此,您可以使用 mysqli_query() 或 PDO::query()。 HERE

    了解更多详情

    【讨论】:

      猜你喜欢
      • 2016-08-14
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      相关资源
      最近更新 更多