首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用用户更改密码表单更新sql表中的用户md5密码

问使用用户更改密码表单更新sql表中的用户md5密码
EN

Stack Overflow用户
提问于 2012-12-09 03:33:52
回答 2查看 8.3K关注 0票数 0

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

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

用户名是从$_SESSION 'autheticatedUser‘中获取的,密码是从前面的$_POST表单变量中获取的。然后我使用SQL语句从数据库获取密码,并与'currentpassword‘变量进行比较,这算不算不安全的客户端验证??

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

我一直在反复阅读我的代码,试图找出哪里出了问题,因为当我试图更改用户帐户密码时,我一直被返回到我的登录页面(使用$SESSION标题),告诉我它已经正确更新,但是当我检查数据库时,密码还没有更新。

我希望有人的观点或观点可以帮助我看到我错过了什么,谁能建议为什么我的sql UPDATE语句不工作?

欢迎任何建设性的批评

下面是我为'action‘php页面编写的代码

代码语言:javascript
复制
 <?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);

?>
EN

回答 2

Stack Overflow用户

发布于 2012-12-09 03:38:51

$user和$username是不同的变量。

票数 1
EN

Stack Overflow用户

发布于 2013-07-21 19:39:09

延迟了一点:P

但在行$confirmnewpassword =md5($POST‘’confirmnewpassword‘);

它应该是

$confirmnewpassword =md5($_POST‘’confirmnewpassword‘);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13781096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档