2012-01-02 81 views
-1

下面的代碼是爲了將值插入到MySQL數據庫中,如果密碼匹配,用戶名或電子郵件尚未使用。這段代碼是從另一個頁面上的ajax調用的。當它被調用時,頁面會將我重定向到register.php,而不是由ajax在後端完成。有沒有人看到可能導致此問題的任何問題?它不會給我任何錯誤,只是一個空白的白頁。PHP註冊代碼不能正常工作

$user = strip_tags(htmlspecialchars($_POST['user'], ENT_QUOTES)); 
$pass = strip_tags(htmlspecialchars($_POST['pass'], ENT_QUOTES)); 
$cpass = strip_tags(htmlspecialchars($_POST['cpass'], ENT_QUOTES)); 
$age = strip_tags(htmlspecialchars($_POST['age'], ENT_QUOTES)); 
$email = strip_tags(htmlspecialchars($_POST['email'], ENT_QUOTES)); 
$country = strip_tags(htmlspecialchars($_POST['count'], ENT_QUOTES)); 
$lang = strip_tags(htmlspecialchars($_POST['lang'], ENT_QUOTES)); 
$mdpass = md5($pass); 
$mdcpass = md5($cpass); 
$created = Date("Y-m-d"); 


$result = mysql_query("SELECT username,email FROM tableName WHERE username = '$user'"); 
while ($row = mysql_fetch_array($result)) 
{ 
if ($row['username']>0) { 
    echo 'nvuname'; 
} 
elseif ($row['email']>0) 
{ 
    echo 'nvemail'; 
} 
else 
{ 
    if ($mdpass == $mdcpass && $age>>14) 
    { 
     mysql_query("INSERT INTO tableName (username, pword, email,created,admin,rnumenab,autoreload,country,mailenab,updates,lang) VALUES ($user, $mdpass, $email, $created,'0','1','1',$country,'1','0',$lang)"); 
     echo 'success'; 
    } 
} 

的JavaScript:

$("#regsubmit").click(function() { 
    var action = $("#mainReg").attr('action'); 
    var form_data = { 
     user: $("#user-reg").val(), 
     pass: $("#pass-reg").val(), 
     cpass: $("#cpass-reg").val(), 
     email: $("#email").val(), 
     age: $("#age").val() 
    }; 
    $.ajax({ 
     type: "POST", 
     url: action, 
     data: form_data, 
     success: function(result) 
     { 
      if(result=='success') { 
       $('#register-action').animate({ 
        opacity : '-=1', 
        bottom : '-=60%' 
        }, 600); 
       $('#register-action-bckgnd').hide(); 
       $('.message').fadeOut(600); 
      } else { 
       $('.regerror').fadeIn(600); 
      } 
     } 
    }); 
    return false; 
}); 

謝謝你,如果你看到任何問題,請讓我知道。非常感謝!

另外:如何清理我的輸入以便不包含HTML標籤或者strip_tags是否可以做到這一點?謝謝。

編輯:它現在的作品,並提交頁面不重新加載,但它總是返回錯誤,而不是成功,即使我確信我使用的是一個開放的電子郵件,用戶名。原來我有('$ age')而不是('#age')。想法?

+1

雖然你的問題是不是不清楚,它的質量是低,因爲還有比問題更多的代碼,使它看起來好像你希望我們做你的工作。考慮從代碼中剝離任何不相關的部分,或者改進問題本身。 *「這是我的代碼,請爲我修復」*通常在這裏不起作用。 – 2012-01-02 21:01:37

+0

@TomvanderWoerdt我刪除了任何不必要的東西 – 2012-01-02 21:03:21

+2

你顯然希望'$ age> 14'而不是'$ age >> 14'(後者是一個位移) – ThiefMaster 2012-01-02 21:09:56

回答

1

雖然我還沒有看到你的JavaScript,當ajax調用導致一個空白頁,這通常意味着該頁面正常張貼,而不是(僅...)通過ajax。

你需要像

event.preventDefault(); 

return false; 

添加一些你的JavaScript點擊/提交功能。

編輯:沒有看到html,您正在使用點擊處理程序,雖然該點擊處理程序可能會返回false,但這並不意味着該表單不會正常提交。我會將JavaScript附加到表單提交處理程序,並阻止提交。

+0

我有一個返回false;在我的代碼中。 – 2012-01-02 21:08:20

+1

@Joseph Torraca聽起來像是在提交:'當它被調用時,頁面將我重定向到register.php,而不是由ajax'在後端完成。 – jeroen 2012-01-02 21:09:51

+0

@Joseph Torraca查看我的編輯。 – jeroen 2012-01-02 21:17:34

1

嘗試使用普通按鈕而不是提交按鈕,例如,而不是

<button id="regsubmit">register</button> 

<input type="submit" id="regsubmit" value="register" /> 

或者你可以做一些像$("form-seletor").submit(function(){ return false; });