2013-10-29 86 views
0

我已经创建了一个用户一种形式来改变其编程为bellow-MySQL查询不给正确的输出

include("../database.php"); 
if(isset($_SESSION['user_name'])) 
{ 
    $password=$_POST['new_password']; 
    $query="select password from login where username = '".$_SESSION['user_name']."' and password='".md5($password)."'"; 
    echo $query."<br>\n"; 
    $result=mysql_query($query) or die(mysql_error()); 
    echo $result."<br>\n"; 
    echo "abc<br>\n"; 
    echo mysql_num_rows($result)."<br>\n"; 
    if(mysql_num_rows($result)) 
    { 
     echo "def"; 
     $row=mysql_fetch_row($result); 
     $pass=$row['password']; 
     echo $pass; 
     if($pass==$password) 
     { 
      $query2="UPDATE login SET password='$password' WHERE username='$_SESSION[user_name]'"; 
      echo $query2; 
      echo "Password changed successfully"; 
     } 
     else 
     { 
      echo "You entered wrong current password"; 
     } 
    } 
    else 
    { 
     echo "here"; 
    } 
} 
else 
{ 
    header('Location:index.php'); 
} 

它给$结果= 0的密码。所以它不会更新用户密码。它直接转到其他部分,并在输出“在这里”写入。这是什么解决方案。

+2

很难确定,但你使用做一个SELECT'$ _ POST [“NEW_PASSWORD”]',然后使用相同的值的更新。当然,你应该使用SELECT的现有密码,因为他们的密码在那时不会改变? – andrewsi

+0

你的查询是什么样的,用户名和密码实际上是否存在于数据库中 – ejrowley

+1

更改''“。$ _ SESSION [user_name]。”“' – user2092317

回答

0

您正在使用NEW_PASSWORD而不是密码字段来查找现有用户。

我想这应该是这样的(假设你的用户也在现场“密码”提供的旧密码):

$password=$_POST['password']; 
    $query="select password from login where username = '".$_SESSION['user_name']."' and password='".md5($password)."'"; 

如果不是的话,那么你至少应该添加字段输入旧密码并使用该字段在数据库中查找用户。

1

您正在使用一个变量 - 密码 - 两件事情:旧密码,这是保存在与用户ID的DB的MD5哈希值,以及新的密码,这被传递到你的日常从用户。

使它们成为两个不同的变量。第一个查询应该从db中密码的MD5中设置“old_password”。您可以使用它来确认用户知道旧密码。

然后在数据库中保存新的密码,如果一切正常。

0

你正试图通过新密码的哈希值获取用户

$password=$_POST['new_password']; 
$query="select password from login where username = '".$_SESSION['user_name']."' and password='".md5($password)."'" 

如果表单包含OLD_PASSWORD输入,你应该分配新建分配FY到:

$password=md5($_POST['old_password']); 
$query="select password from login where username = '".$_SESSION['user_name']."' and password='".$password."'"; 

和变化更新查询:

$newPassword=md5($_POST['new_password']); 
$query2="UPDATE login SET password='$newPassword' WHERE username='$_SESSION[user_name]'";