Задать вопрос
@DMax921

Простая форма смены пароля, как исправить ошибку?

Здравствуйте друзья, я на просторах интернета нашел простую форму смены пароля, но ошибка, "Старый пароль не верен" var_dump говорит что пароль верен в базе он как md5 и Select выводит его так же, но он не проверяется.. Я так понимаю, проблема в запросе?
Сума можно сойти, посмотрите пожалуйста опытным глазом..

<?php session_start(); ?>
<?php require_once("includes/db_connection.php"); ?>
<div class="lk">
            <h1>Добро пожаловать, <span><?php echo $_SESSION['login'];?>!</span></h1>
                    <form action="" method="post">
                    <div class="lk2">
                    <p class="submit"> <input class="button" id="newpass" name="newpass" type= "submit" value="Сменить пароль"></p>
                    </div>
                    </form>
                    <?
                if (isset($_POST["newpass"]))
                {?>
                            <form action="" name="changepass" method="post">
                            <div class="lk3">
                                <div class="lk4">
                                <p><label >Старый пароль<br>
                                    <input class="input" id="lastpass" name="lastpass" size="20" type="password" value=""></label></p>
 
                                <p><label>Новый пароль<br>
                                    <input class="input" id="newpass" name="newpass"size="20" type="password" value=""></label></p>
                                    
                                <p><label >Подтвердите новый пароль<br>
                                    <input class="input" id="comfirmpass" name="comfirmpass" size="20" type="password" value=""></label></p>
                                    
                                <p class="submit"><input class="button" name="change" type= "submit" value="Сменить"></p>
                                    </div>
                            </div>  
                            </form>
                        <?}?>
                
<? 
if(isset ($_POST["change"]))
  {
    if(!empty($_POST["lastpass"]))
    {
      if(!empty($_POST["newpass"]))
      {
        if($_POST["comfirmpass"] == $_POST["newpass"])
        {
          $lastpass = mysql_real_escape_string($_POST["lastpass"]);
          $newpass = mysql_real_escape_string($_POST["newpass"]);
          $comfirmpass = md5(htmlspecialchars($_POST["comfirmpass"]));
          
          $searchuser = "SELECT * FROM users WHERE login='".$_SESSION['login']."' AND password='".md5($lastpass)." ' LIMIT 1";
		  var_dump($searchuser);
            $searchresult = mysql_query($searchresult);
            if($searchresult)
            {
              $updatedata = "UPDATE users SET password='".md5($newpass)."' WHERE login='".$_SESSION['login']."'";
                $updateresult = mysql_query($updatedata);
                if($updateresult)
                {
                  echo 'Пароль успешно изменен!';
                }
            }
              else
              {
                echo 'Старый пароль введен неверно!';
              }
        }
          else
          {
            echo 'Подтверждение пароля не введено!';
          }
      }
        else
        {
          echo 'Новый пароль не указан!';
        }
    }
      else
      {
        echo 'Старый пароль не указан!';
              }
  }
?>
  • Вопрос задан
  • 489 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@skymike
$searchresult = mysql_query($searchresult);
Попробовать сменить на:
$searchresult = mysql_query($searchuser);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@DMax921 Автор вопроса
Сделал вот так, по запросу нахожу пользователя с ИД1
в Update если совпадает ИД и старый пароль то записываем Новый пароль.
Но есть проблема, при верном и неверном старом пароле, выводится сообщение Что пароль успешно изменен. Поправьте пожалуйста, я не понимаю...
Спасибо

<? 
if(isset ($_POST["change"]))
  {
    if(!empty($_POST["lastpass"]))
    {
      if(!empty($_POST["newpass"]))
      {
        if($_POST["comfirmpass"] == $_POST["newpass"])
        {
          $lastpass = mysql_real_escape_string($_POST["lastpass"]);
          $newpass = mysql_real_escape_string($_POST["newpass"]);
          $comfirmpass = md5(htmlspecialchars($_POST["comfirmpass"]));
          
          $searchuser = "SELECT * FROM users WHERE id='".$_SESSION['id']."' LIMIT 1";
		  var_dump($searchuser);
            $searchresult = mysql_query($searchuser);
            if($searchresult)
            {
              $updatedata = "UPDATE users SET password='".md5($newpass)."' WHERE id='".$_SESSION['id']."' AND password='".md5($lastpass)."'";
                $updateresult = mysql_query($updatedata);
                if($updateresult)
                {
                  echo 'Пароль успешно изменен!';
                }
            }
              else
              {
                echo 'Старый пароль введен неверно!';
              }
        }
          else
          {
            echo 'Подтверждение пароля не введено!';
          }
      }
        else
        {
          echo 'Новый пароль не указан!';
        }
    }
      else
      {
        echo 'Старый пароль не указан!';
              }
  }
?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы