-1

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

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

有人可以在这一点上帮助我吗?

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

非常感谢。

通过.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.");
?>
4

3 回答 3

0

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

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

于 2013-06-24T08:17:15.133 回答
0

你可以使用这个: -

$result = mysql_query("UPDATE mysql.user SET Password = PASSWORD('$password') WHERE User='$username'");
if (!$result) {
    die('Invalid query: ' . mysql_error());
}
于 2013-06-24T08:18:37.723 回答
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()。更多细节在这里

于 2013-06-24T08:19:16.417 回答