2015-08-02 3 views
0

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

Все, кажется, работает, но мои запросы обновления просто не срабатывают.

Например, код на моей странице с забытым паролем создает новый ключ сброса, если адрес электронной почты и все совпадают, а затем отправляет код внутри ссылки (например, www.mydomain.net/forgotpassword.php?key=xxx) ,

На странице тесты, если ключ присутствует, когда вы землю, код которого находится ниже:

include ('database_connection.php'); 
session_start(); 
if($_GET['key']) 
{ 
    $key = $_GET['key']; 
    $query_check_key = "SELECT * FROM password_reset WHERE Reset_link='$key' AND Expiration>=NOW() AND used=0"; 
    $result_check_key = mysqli_query($dbc, $query_check_key); 
    $result_check_row = $result_check_key->fetch_array(MYSQLI_ASSOC); 
    if(!$result_check_key) { 
     echo "Error"; 
    } 

     if (mysqli_num_rows($result_check_key) == 1) 
     { 
     // Update the database to set the "used" field to 1 
     $query_link_used = "UPDATE password_reset SET Used=1 WHERE Reset_link='$key'"; 
     $result_link_used = mysqli_query($dbc, $query_activate_account) ; 

     $_SESSION['Memberid'] = $result_check_row['Memberid']; 
     header("Location: reset_password.php"); 
     } 
} 

Условный оператор имеет значение верно, когда я пытаюсь это как страница перенаправляется на reset_password.php и сеанс успешно создан правильно. Но когда я проверяю таблицу базы данных, поле Использовать не обновлялось.

Точно так же на странице reset_password.php запрос обновления не будет работать:

if (empty($error)) 
     { 
      //Query to change password 
      $query_change_password = "UPDATE members SET Password=$hashed_password WHERE Memberid=$Memberid"; 
      $result_change_password = mysqli_query($dbc, $query_change_password); 

      if (mysqli_affected_rows($dbc) > 0)//if update query was successful 
      { 
       echo '<div class="success">Your password has now been reset. You may now <a href="login.php">Log in</a></div>'; 

      } else 
      { 
       echo '<div class="errormsgbox">Oops !Your password could not be reset. Please contact the system administrator.</div>'; 
      } 
      mysqli_close($dbc); 
     } 

Массив ошибок, безусловно, пустой и если оператор проверки затронутых строк остается на 0, как оператор возвращает ложь и возвращается к утверждению else.

Я запустил запросы в PHPMyAdmin, и они работают нормально, поэтому я не вижу, в чем проблема. Любая помощь приветствуется.

+1

я думаю, что вы забыли вложить значение поля с цитатами, это suppost быть как «$ hashed_password» и также как CHK $ MemberID – user1844933

+0

Я попробую попробовать, но в первом блоке кода переменные заключены в кавычки, то есть '' UPDATE password_reset SET Used = 1 WHERE Reset_link = '$ key' "' – James

+1

В вашем обновлении вы запускаете $ query_activate_account, который я не могу см. в любом месте. – Mihai

ответ

0

начало сеанс в вашей reset_password.php странице и запрос обновления строки:

session_start(); 
if (empty($error)) 
{ 
    $Memberid = $_SESSION['Memberid']; 
    //Query to change password 
    $query_change_password = "UPDATE members SET Password='$hashed_password' WHERE Memberid='$Memberid'"; 
+0

Сессия уже началась, и это не было проблемой. В комментарии выше от @ user1844933 о закрытии кавычек была разрешена страница сброса. Однако мне все еще не удается получить столбцы «Использовать» для обновления до 1 из первого блока кода, т. Е. «UPDATE password_reset SET Used = 1 WHERE Reset_link = '$ key'" ' – James

+0

как вы можете сгенерировать ключ сброса? это любое случайное значение? – Chayan

+0

Это случайный хэш. – James

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