使用PHP更改MYSQL用户密码

时间:2013-06-24 08:13:01

标签: php mysql username change-password

我正在尝试为我的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.");
?>

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您可以使用: -

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

答案 2 :(得分:0)

试试这个,这也可以帮助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

的详细信息