2015-12-28 100 views
0

大家早上好,我是新來的如此裸請與我...密碼數據庫沒有更新

我創建了一個名爲password_reset功能

我recover_password頁面完美的作品,併發送電子郵件和更新場所謂validation_code因爲我希望它...

現在當我收到的電子郵件發送該鏈接

要重置您的密碼,請訪問 http://localhost/cms/account/reset-password.php?email=myemail.net&code=313893625577

現在我有一個網頁叫做reset-password.php如您在鏈接

看到當你點擊它後進入的網頁完全

我的HTML

<?php display_message();?> 
<?php password_reset();?> 

<form role="form" action="reset-password.php" method="post"> 
    <div class="form-group"> 
     <label>Verification Code</label> 
     <input class="form-control" type="text" id="verification_code" name="verification_code" value="<?php echo isset($_GET['code']) ? $_GET['code'] : '';?>"> 
    </div> 
    <div class="form-group"> 
     <label>Email Address</label> 
     <input class="form-control" type="text" id="email" name="email" value="<?php echo isset($_GET['email']) ? $_GET['email'] : '';?>"> 
    </div> 
    <div class="form-group"> 
     <label>Password</label> 
     <input class="form-control" type="text" id="password" name="password" placeholder="Password"> 
    </div> 
    <div class="form-group"> 
     <label>Confirm New Password</label> 
     <input class="form-control" type="text" id="confirm_password" name="confirm_password" placeholder="Confirm Password"> 
    </div> 
    <input type="submit" name="submit" id="btn-login" class="btn btn-custom btn-lg btn-block" value="Reset Password"> 
    <input type="hidden" class="hide" name="token" id="token" value="<?php echo token_generator();?>"> 

    </form> 

我用

value="<?php echo isset($_GET['code']) ? $_GET['code'] : '';?>"> 
value="<?php echo isset($_GET['email']) ? $_GET['email'] : '';?>"> 

從url中拉出值並放入字段中...問題在於它當你在新的密碼

我有復位頁面上4場

驗證碼 電子郵件 密碼 confirm_password

現在

當我把密碼保存在我點擊類型將不會更新密碼提交它不會更新密碼。

function password_reset() 
{ 
    if (isset($_COOKIE['temp_access_code'])) { 

     if (isset($_POST['email']) && isset($_POST['code'])) { 

      if (isset($_SESSION['token']) && isset($_POST['token'])) { 

       if ($_POST['token'] === $_SESSION['token']) { 

        if ($_POST['password'] === $_POST['confirm_password']) { 

         $updated_password = password_hash($_POST['password']); 

         $sql = "UPDATE users SET user_pwd = '" . escape($updated_password) . "', validation_code = 0 WHERE user_email = '" . escape($_GET['email']) . "'"; 
         query($sql); 

         set_message("your password was updated"); 

       } 
      } 
     } 
    } 
    } else { 

     set_message("Sorry your time has expired"); 
     redirect("../account/request-password-reset.php"); 
    } 
}// End Function 

這裏是個什麼樣子,當你點擊電子郵件

enter image description here

回答

3

給出的鏈接,在功能password_reset()您使用的是支票像

if (isset($_GET['email']) && isset($_GET['code'])) {

但它永遠不會是真的,因爲你發送郵件的形式,所以你需要檢查

if (isset($_POST['email']) && isset($_POST['code'])) { 

以獲得進一步的功能。

+0

謝謝您的回覆我已經試過,但得到相同的結果 – Phpfreak

+0

錯誤是顯而易見的,你通過發佈sendung表單,並請求GET參數。你應該用'<?php echo $ _GET ['email'];'用'<?php echo isset($ _ GET ['email'])'來改變這兩行。 $ _GET ['email']:'';'這應該處理錯誤,但不存儲不受此影響。 –

+0

我已經對代碼進行了編輯,因爲您已經建議表單如何運行,它不會更新密碼或顯示set_message(「您的密碼已更新」);或重定向 – Phpfreak