2013-05-01 81 views
-2

我的代碼存在多個問題。我已經寫了一個帶有驗證的用戶註冊表單,但是我需要幫助我寫什麼來保存在數據庫中,以及我是否缺少任何東西。截至目前,這不起作用。當我點擊註冊時,它只刷新頁面。用戶註冊 - 錯誤的邏輯

我很感激任何幫助,謝謝。

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<SCRIPT language="JavaScript"> 

       function validateRegistrationForm(){ 
      if(!validateEmailField()) // Invalid email format 
      return false; 
      if(!validatePasswordField()) // Invalid password length 
      return false; 
      if(validateUserNameField()) // invalide characters in email 
     return false; 
} 

      function validateEmailField(){ 
      var x=document.getElementById("email").value; 
      var atpos=x.indexOf("@"); 
      var dotpos=x.lastIndexOf("."); 
      if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) 
{ 
      errorPopup("Not a valid e-mail address"); 
      return false; 
} 
    if(email==x) //If the old email is equal to the current then perform no check for uniqueness. On the server side the email portion will be ignored. 
     return true; 

    return isEmailUnique(); // return true if the email is unique 
} 
</script> 


</head> 

<body class="nobg loginPage"> 

    <header> 
    </header> 
    <div id="content"> 
     <div class="ic"></div> 
     <div class="inner"> 
      <div class="container_12"> 
       <div class="wrapper"> 
        <div class="grid_12"> 
        </div> 
       </div> 
       <div class="wrapper"> 
        <div class="grid_12"> 
         <h2 class="h-pad1">Open an Account with Us</h2> 
         <form action="" id="validate" class="form" method="POST"> 
      <fieldset> 
       <div class="formRow"> 
        <label for="login">Username:</label> 
        <div class="loginInput"><input type="text" name="username" class="validate[required]" id="username" maxlength="15"/></div> 
        <div class="clear"></div> 
       </div> 

       <div class="formRow"> 
        <label for="pass">Password:</label> 
        <div class="loginInput"><input type="password" name="password" class="validate[required]" id="pass" /></div> 
        <div class="clear"></div> 
       </div> 

       <div class="formRow"> 
        <label for="pass">Repeat Password:</label> 
        <div class="loginInput"><input type="password" name="rpassword" class="validate[required]" id="rpass" /></div> 
        <div class="clear"></div> 
       </div> 

       <div class="formRow"> 
        <label for="pass">Email:</label> 
        <div class="loginInput"><input type="text" name="email" class="validate[required]" id="email" /></div> 
        <div class="clear"></div> 
       </div> 

       <div class="formRow5"> 
       <script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=6Lfz39kSAAAAABY7fpEs0x1ZzvcFSP-gClbe8XYb"></script> 
       <noscript> 
       <iframe src="http://www.google.com/recaptcha/api/noscript?k=6Lfz39kSAAAAABY7fpEs0x1ZzvcFSP-gClbe8XYb" height="300" width="500" frameborder="0"></iframe><br/> 
       <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea> 
       <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/> 
       </noscript> </div> 
       <div class="loginControl"> 
        <input type="submit" value="Register" class="dblueB logMeIn" name="registerBtn"/> 
        <div class="clear"></div> 
       </div> 
      </fieldset> 
     </form> 
          </li> 
         </ul> 
        </div> 
       </div> 
      </div>   
     </div> 
    </div> 
    <footer> 
     </div> 
    </footer> 
</body> 
</html> 
+0

在validateEmailField您引用'如果(電子郵件== X )'但是據我所見,電子郵件變量永遠不會被定義。 'isEmailUnique()'函數似乎沒有被定義。 'errorPopup()'函數似乎沒有被定義。你的'validateRegistrationForm()'函數似乎返回false或undefined不管怎麼說 - 它永遠不會返回true,並且我也看不到任何調用這個函數的東西? 'validateUsernameField()'和'validatePasswordField()'函數似乎沒有被定義。您有一個帶有提交按鈕和POST方法的表單元素,但沒有操作URL。 – 2013-05-01 23:02:28

回答

1

據我所知 - 你沒有任何東西將表單的提交連接到你寫的驗證代碼。您提交表單時,您的validateRegistrationForm()函數是否被調用?

至於你的功能 - 如果表單元素有效,你會想返回true,如果不是,你會返回false。返回false將取消提交表格。

+0

用新代碼修復並更新OP – user2338118 2013-05-01 22:54:11

1

在大多數情況下,您不能使用JavaScript寫入數據庫,因爲JS是客戶端代碼,數據庫往往位於服務器上。在這種情況下,您需要使用服務器端語言來完成此操作(如.NET,PHP,Java等)。如果可以說出要寫入的數據庫以及正在使用的服務器語言(如果您已使用任何服務器語言),則可能會得到更詳細的答案。

+0

我只想要一個簡單的用戶註冊表單,當用戶註冊時,他們可以登錄。 – user2338118 2013-05-01 22:39:48

+1

這意味着你需要一些方法來跟蹤他們的細節,這意味着你(幾乎肯定)需要一個數據庫,這意味着你(幾乎肯定)需要一些服務器端代碼。我建議最簡單的方法(根據我自己的個人喜好)是PHP,但這取決於一些因素,比如您的網站託管位置,您必須在該服務器計算機上安裝軟件的訪問權限(如果有)以及/或者已經安裝了哪些軟件。 – 2013-05-01 22:55:47

+0

正如克里斯所說,這取決於您的網站託管在哪裏,但許多網絡主機允許您使用MySQL和PHP。如果您不確定如何使用這兩種資源,可以在網上找到使用PHP寫入MySQL數據庫的大量資源。 – Kurt 2013-05-01 23:02:35

0

您點擊註冊按鈕之前,有一個JavaScript錯誤...

14號線1列: 「未捕獲的SyntaxError:意外的標記」

+0

修復了錯誤,你找到了嗎? – user2338118 2013-05-01 22:53:16

+0

不,我不能在發佈它之前測試新的固定代碼。 – 2013-05-01 23:08:39