【发布时间】: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