2013-10-25 69 views
0

我有一個有效的PHP驗證註冊腳本。通過AJAX檢查數據庫中現有的數據

我現在將其轉換爲通過AJAX運行。

我可以理解根據輸入值的val來驗證表單。例如空格式和內容等

但我需要幫助檢查數據庫中是否已存在用戶名。

所以,我有這對於PHP方面:

 $query = " SELECT 1 FROM users WHERE username = :username "; 

    $query_params = array( 
     ':username' => $_POST['username'] 
    ); 

    try 
    { 
     $stmt = $db->prepare($query); 
     $result = $stmt->execute($query_params); 
    } 
    catch(PDOException $ex) 
    { 
     die("Failed to run query: " . $ex->getMessage()); 
    } 
    $row = $stmt->fetch(); 

    if($row) 
    { 
    echo 'Username Taken'; 
    die(); 
    } 

我已經使用AJAX別的地方我的網站上,但僅用於簡單驗證和代碼如:

$(document).ready(function(){ 
$(".registerform").submit(function(){ 
    var $targetForm = $(this); 

    $targetForm.find(".error").remove(); 
    $targetForm.find(".success").remove(); 

    // If there is anything wrong with 
    // validation we set the check to false 
    var check = true; 

    // Get the values 
    var username = $('.regusername').val(); 
    var password = $('.regemail').val(); 
    var email = $('.regpassword').val(); 
    var ut = response.usernameTaken; 

    // Username Validation 

    // If isername empty 
    if (username == '') { 
     check = false; 
     $('.regusername').css('border', 'solid 2px red'); 
    } else { 
     $('.regusername').css('border', 'solid 2px green'); 
    } 



    // ... goes after Validation 
    if (check == true) { 
     ShowAjaxLoader(); 
$.ajax({ 
type: "POST", 
url: "process/register.php", 
data: $targetForm.serialize(), 
dataType: "json", 
success: function(response){ 

    if (response.databaseSuccess == true) 
; // ok 
    else 
; //error 

} 
     }); 
    } 
    return false; 
}); 
}); 

任何幫助關於驗證數據庫中項目的下一步是什麼。

我打算做一個JSON返回例如

$return['emailTaken'] = true; 
echo json_encode($return); 

,然後檢查,在AJAX驗證,但只是......不認爲它這樣做的正確方法。

對不起,如果它真的基礎知識。只需要指向正確的方向。

+1

要檢查用戶是否存在,請嘗試'if($ stmt-> rowCount()> 0){echo「存在「; }' –

+0

無論你的應用程序有多「小」,你都應該考慮使用框架。也就是說,這裏有一個關於你正在創建的w/o框架的內容,可能有助於閱讀http://codebyjeff.com/blog/2013/04/how-do-i-use-ajax-with-框架-X – jmadsen

回答

0

我會返回一個錯誤消息,以及導致錯誤的字段的類/ ID。這樣,您可以顯示錯誤消息,並標記該字段,以便用戶更容易看到他們需要糾正的地方。

{ 
    'errorMsg':'e-mail address already taken', 
    'formField': 'regemail' 
} 

或類似的東西。 這也可以包裝成一個數組,所以你可以返回多個錯誤(通常在大型窗體中有用)