使用用户更改密码表单在sql表中更新用户md5密码

时间:2012-12-08 19:33:52

标签: php sql session-variables change-password

我正在创建用户表单和表单操作,其中用户(已使用会话变量登录)可以更改其md5(我知道MD5已过时且不安全,这是出于测试目的)加密的帐户密码存储在sql数据库中'用户'表。

我有一个请求输入'currentpassword','newpassword'和'confirmnewpassword'的表单。表单使用$ _POST将输入的数据传递给passwordaction.php。

用户名是从$ _SESSION'autuineticatedUser'获取的,以及从之前的$ _POST表单变量中获取的密码。然后我使用sql语句从数据库中获取密码以与'currentpassword'变量进行比较,这个数字是否会影响客户端验证? ?

然后我有一个SQL UPDATE语句来更新数据库中指定用户的密码行,并使用$ _SESSION标头重定向用户并通知成功或失败。

我一直在阅读并重新阅读我的代码,试图弄清楚我在哪里出错了,因为在尝试更改用户帐户密码时我一直都会返回到我的登录页面(使用$ SESSION标题)告诉我它已更新但是当我检查数据库时,密码还没有更新。

我希望别人的观点或观点可以帮助我看看我错过了什么,有人可以建议为什么我的sql UPDATE语句不起作用吗?

任何建设性的批评欢迎

下面是我的“动作”php页面的代码

 <?php

session_start();

$username = $_SESSION["authenticatedUser"];
$currentpassword = md5($_POST['currentpassword']);
$newpassword = md5($_POST['newpassword']);
$confirmnewpassword = md5($POST['confirmnewpassword']);

/* make a connection with database */
$con = mysql_connect("localhost", "root", "") or die(mysql_error());

/* select the database */
mysql_select_db("groupproject") or die(mysql_error());

$queryget = mysql_query("SELECT password FROM users WHERE username='$username'") or 
die(mysql_error());
$row = mysql_fetch_assoc($queryget);
 $currentpasswordDB = $row['password'];

//check passwords

if ($currentpassword==$currentpasswordDB)

{
if ($newpassword==$confirmnewpassword)
{
//success, change password in DB
    $querychange = mysql_query("UPDATE users SET password='$newpassword' WHERE       
 username='$username'") or die(mysql_error());
}
else header("Location: passwordmismatch.php");

if ($querychange == true){

    $_SESSION["passchange"] = "Your password has been changed, Please Log in";

    header("Location:login.php");

}

else $_SESSION["nopasschange"] = "Your password could not be changed, Please try   
again";
 header("Location:userchangepassword.php");

}

else header("Location: passwordmismatch.php");

mysql_close($con);

?>

2 个答案:

答案 0 :(得分:1)

$user$username是不同的变量。

答案 1 :(得分:0)

迟到了:P

但在行中 $ confirmnewpassword = md5($ POST ['confirmnewpassword']);

应该是

$ confirmnewpassword = md5($ _ POST ['confirmnewpassword']);