2013-10-19 101 views
1

我正在嘗試創建一個用於更改用戶密碼的表單。控制檯中沒有生成錯誤,但沒有更新。驗證方也在工作,所以它必須下到Ajax部分?更改密碼PHP/Ajax/JQuery

聲明:我知道我不應該在PHP中使用mysql,但我正在努力獲得基礎知識,並在稍後的日子學習mysqli :) 此外,config.php用於多種其他功能所以我知道config.php很好。

任何想法是什麼問題?

HTML:

  <fieldset> 
       <form method="post" name="password-form" id="form-password"> 
       <label>Password:</label> <br> 
       <input type="password" name="password" id="password" value="" size="32" /> 
       <br> 
       <br> 
       <label>Re-Enter Password:</label> <br> 
       <input type="password" name="password-check" id="password-check" value="" size="32" /> 
       <br> 
       <br> 
       <input type="submit" value="Submit" id="passsubmit"> 
       </form> 
      </fieldset> 

JQuery的:

$(function(){ 
     $("#passsubmit").click(function(){ 
     $(".error").hide(); 
     var hasError = false; 
     var newpass = $("#password").val(); 
     var checkVal = $("#password-check").val(); 
     if (newpass == '') { 
      $("#password").after('<span class="error">Please enter a password.</span>'); 
      hasError = true; 
     } else if (checkVal == '') { 
      $("#password-check").after('<span class="error">Please re-enter your password.</span>'); 
      hasError = true; 
     } else if (newpass != checkVal) { 
      $("#password-check").after('<span class="error">Passwords do not match.</span>'); 
      hasError = true; 
     } 

     if(hasError == true) {return false;} 

     if(hasError == false) { 
       $.ajax({ 
       type: "POST", 
       url: "resource/changepassword.php", 
       data: {newpass:newpass}, 
       success: function(){} 
       }); 
     }; 
    }); 
}); 

PHP:

<?php 
session_start(); 
include('config.php'); 
$user_check=$_SESSION['login_user']; 

$newpass=$_POST['newpass']; 
$sql_rec = "select UserID from useradmin where username='$user_check' "; 
$rs_rec = mysql_query($sql_rec); 
$data_rec = mysql_fetch_object($rs_rec); 

$userID = $data_rec->UserID; 



$updatesql="UPDATE useradmin SET passcode='$newpass' WHERE UserID=$userID"; 

mysql_query($updatesql, $bd) or die(mysql_error()); 


?> 

$ BD是從我的config.php MySQL連接細節。

UPDATE:

我添加<div id="passsubmit2">123</div>到我的網頁,並改變了jQuery來:

$(function(){ 
     $("#passsubmit2").click(function(){ 

而且它完美的作品,所以它使用表單按鈕時它不工作只是?

+0

您正在爲更新創建查詢,但從未實際執行它。此外,您要發送給查詢的參數是用於提取用戶標識的查詢文本,而不是提取的標識本身。我不明白你爲什麼首先提取id--爲什麼不只是根據用戶名進行更新? – 2013-10-19 20:58:28

+0

呃,我真的不知道。我來自一個沉重的MS SQL背景,並且總是被教導去做所有事情,從UID而不是其他任何事情。我想這只是我一直在做SQL方面的事情。將根據我所做的更改對上述腳本進行一些更改。 – Mcam435

回答

1

最終顯示出來。

我需要添加event.preventDefault();防止正常形態從點火提交。

0

內AJAX更改您的數據

if(hasError == false) { 
       $.ajax({ 
       type: "POST", 
       url: "resource/changepassword.php", 
       data: { 
        newpass : newpass, 
       }, 
       success: function(){} 
       }); 
    }; 

,因爲你沒有將數據發送到服務器,而不是宣佈信息變量

0

確保通過所有必要的data到PHP服務器。現在,從我所看到的,你傳遞一個空變量。

info={ 
newpass : newpass, 
checkVal: checkVal 
}; 

$.ajax({ 
       type: "POST", 
       url: "resource/changepassword.php", 
       data: info, 
       success: function(response){ 
        console.log(response); 
       } 
     }); 

在PHP端:

<?php 
$newPassword=$_POST['newpass ']; 

編輯:進一步說了一下這個問題,你真的想在會話中存儲用戶ID(唯一數字ID),而不是用戶名。通過使用用戶名作爲唯一值引用你的mysql數據庫是一個非常糟糕的想法(相信我,我犯了同樣的錯誤)。

此外,你應該要求用戶無論何時改變當前的密碼(如果他們離開自己的計算機上的網站時)進入他們的舊密碼。

+0

用戶標識符的好處。非常有意義。爲什麼更改爲$ newPassword?上面更新了我的腳本,意識到我實際上沒有通過......新密碼。 – Mcam435

+0

對不起,只是放下一個簡單的例子,並沒有意識到你已經有了PHP的那部分。變量名稱無關緊要。 – hellohellosharp

+0

好的,我明白了。我已經更新腳本以包含'newpass'變量(我實際上並不需要'checkVal'),但是仍然沒有更新。 – Mcam435

1

因爲你是通過Ajax請求發送表單數據到您的服務器,你不需要在首位提交類型的該輸入,因爲這將嘗試提交點擊表格,你將不得不編寫額外的代碼停止該提交按鈕的默認功能。所以用簡單的html按鈕或鏈接替換提交按鈕。