2013-12-20 5 views
-2

У меня проблемы с моим запросом обновления в базе данных mysql. У меня есть форма входа в систему, которая, когда пользователь входит в систему, создает адрес электронной почты, пароль и идентификатор пользователя и сохраняет его в сеансе (не уверен, что это самый безопасный способ, пожалуйста, сообщите мне правильный/безопасный способ). Когда они войдут в систему, они могут пойти и изменить свой пароль (или должны быть). Проблема в том, что запрос на обновление пароля не работает для меня.mysql обновить текущий пароль пользователя

Вот мой код, который задает идентификатор, адрес электронной почты и пароль пользователя, когда они войти:

session_start(); 
$_SESSION['id'] = $id; 
$_SESSION['email'] = $email; 
$_SESSION['password'] = $password; 

Вот код, который предназначен для обновления пароля:

session_start(); 
if (isset($_POST['email']) && isset($_POST['password']) && isset($_POST['newPassword']) && isset($_POST['oldPassword'])) { 
        $email = $_POST['email']; 
        $password = $_POST['password']; 
        $newPassword = $_POST['newPassword']; 
        $oldPassword = $_POST['oldPassword']; 

       mysql_select_db("users", $conn); 

     if(isset($_POST['update'])) { 
      $update = "UPDATE users SET Password='$newPassword' WHERE Password='$_POST[hidden]'"; 
      mysql_query($update, $conn); 
      $_SESSION['password'] = $newPassword; 
     } 

У меня есть поле «Старый пароль», в котором проверяется правильность их старого пароля и поле «Новый пароль», предназначенное для нового пароля пользователя, когда они нажимают «Обновить».

Проблема в том, что когда я нажимаю обновление, ничего не происходит. Я попытался использовать функцию mysql_error(), но это не сработало. Страница обновляется слишком быстро. Обратите внимание, что это еще не весь код, если вы хотите его загрузить: https://www.mediafire.com/?fkjwt58hk5kyt3w Привет, ребята, у меня проблемы с моим запросом обновления в базе данных mysql. У меня есть форма входа в систему, которая, когда пользователь входит в систему, создает адрес электронной почты, пароль и идентификатор пользователя и сохраняет его в сеансе (не уверен, что это самый безопасный способ, пожалуйста, сообщите мне правильный/безопасный способ). Когда они войдут в систему, они могут пойти и изменить свой пароль (или должны быть). Проблема в том, что запрос на обновление пароля не работает для меня.

Я знаю, что этот способ mysql делать вещи очень небезопасен, уязвим для SQL-инъекций и старого способа его выполнения, но это просто практика и для удовольствия. Впоследствии я узнаю, как предотвратить SQL-инъекцию и XSS.

У меня есть другие другие possts на этом сайте с похожими проблемами, но они мне совсем не помогли, я искал Google alot и искал ее на YouTube. Нигде не работает для меня !!!

Пожалуйста, помогите! Thanx заблаговременно

Если есть что-то еще, что вы хотели бы, чтобы я опубликовал или я ничего не сказал, просто дайте мне знать.

PS: Если вы можете, пожалуйста, загрузите все файлы и проверить их и запустить их сами :)

+3

** Опасность **: Вы используя [** устаревший ** API баз данных] (http://stackoverflow.com/q/12859942/19068) и должен использовать [современную замену] (http://php.net/manual/en/mysqlinfo.api .choosing .php). Вы также уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, что современный API упростит [защиту] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php). – Quentin

+0

Вы используете [неподходящий алгоритм хэширования] (http://php.net/manual/en/faq.passwords.php) (в данном случае это «вообще не алгоритм хеширования»!) И нужно [заботиться о себе лучше ] (https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet) паролей пользователей. – Quentin

+1

Что в $ _POST [скрыто]? –

ответ

0
  1. пожалуйста избежать параметров пост, например с mysql_real_escape_string
  2. не использовать mysql_ * функции -> Использование mysqli или PDO для ваших запросов

Вы пытались отладить? ;)

$result = mysql_query($update, $conn); 
if(!$result){ 
    echo mysql_error(); 
    exit; 
} 
0

Необходимо отправить сообщение об ошибке, которую вы получаете.

Из того, что я вижу, я могу догадаться, что предложение where не будет устранено по желанию.

вы написали WHERE Password='$_POST[hidden]' Возможно, вы должны использовать переменную вместо этого.

$oldpassword=$_POST['hidden'] и

WHERE Password='$oldpassword'

+0

, ваш подход неверен. Возможно, у нескольких пользователей одинаковый пароль, и в этом случае он обновит все эти строки. –

+0

@RishabhRaj Я просто пытаюсь помочь решить его запрос. И да, я согласен, что предложение where должно быть против ID. –

0

Пожалуйста, используйте отладку кода при запуске SQL

mysql_query($update, $conn)or die(mysql_error); 

этим вы можете получить сообщение об ошибке

Смежные вопросы