2014-08-29 3 views
0

php jquery와 sql로 사용자 등록 양식을 작성했습니다. 은 ajax 요청을 통해 데이터베이스에 세부 사항을 입력하려고 시도했지만 코드는 이 완벽하게 실행되지만 값은 데이터베이스에 입력되지 않습니다. , 그리고 내가 도 내 쿼리를 SQL 편집기에서 쿼리를 실행하여 괜찮아요,값이 PHP로 데이터베이스에 삽입되지 않습니다

잘 알 수 있습니까?

<!DOCTYPE html> 
     <html> 
      <head> 
       <title>Login Register Test</title> 

       <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script> 

    /** 
    * Created by pratyush on 8/28/14. 
    */ 
    $(function(){ 
     $("input[name='btn_submit_reg']").click(function(){ 
      registerUser(); 
     }); 

     $("input[name='btn_submit_login']").click(function(){ 
      loginUser(); 
     }); 
    }); 



    function registerUser(){ 

     if(IsValidFormReg()){ 

      var frm = $(".register").serialize(); 

      $.ajax({ 
       url : 'modal/registerdao.php', 
       type : 'POST', 
       data : frm, 
       success : function(result) { 

        if (result.indexOf("correct") > -1) { 
         alert(frm); 

         window.location.replace("registrationconfirm.php"); 

        } 

       } 

      }); 

     } 

    } 


    function IsValidFormReg() 
    { 

     var valid= true; 

     var username = $("input[name='username_reg']").val(); 
     var userpass = $("input[name='userpass_reg']").val(); 
     var email = $("input[name='useremail_reg']").val(); 


     if(username.length==0){ 
      valid = false; 

      $("input[name='username_reg']").addClass("formerror"); 
     } 

     if(userpass.length==0){ 
      valid = false; 

      $("input[name='userpass_reg']").addClass("formerror"); 
     } 

     if(email.length==0){ 
      valid = false; 
      $("input[name='useremail_reg']").addClass("formerror"); 

     } 
     else{ 
      if(checkemail(email)==false){ 
       valid = false; 
       $("input[name='useremail_reg']").addClass("formerror"); 
       alert("please enter valid email"); 

      } 
     } 
     if(!valid) 
      $(".formentrieserror").html("&nbsp;&nbsp;&nbsp;&nbsp;Please fill correct form entries..."); 
     else 
      $(".formentrieserror").html("&nbsp;"); 
     return valid; 
    } 
    function checkemail(email){ 

     var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 

     if(email.length>0){ 

      if (!filter.test(email)) 
       return false; 
      else 
       return true; 
     } 
     else 
      return false; 
    } 



    function loginUser(){} 


       <style> 
        .formerror{border: solid 2px red;} 
       </style> 
      </head> 
      <body> 

      <h2>Login Form</h2> <br><br> 
      <form class="login"> 
       <input type="text" name="username_login" placeholder="user name"> <br> <br> 
       <input type="password" name="userpass_login" placeholder="password"><br> <br> 

       <input type="button" name="btn_submit_login" value="Login"> 
      </form> 
      <br><br> 
      <h2>Registration Form</h2> 
      <br><br> 

      <form class="register"> 
       <input type="text" name="username_reg" placeholder="user name"> <br> <br> 
       <input type="password" name="userpass_reg" placeholder="password"><br> <br> 
       <input type="email" name="useremail_reg" placeholder="email"><br> <br> 

       <input type="button" name="btn_submit_reg" value="Register"> 
      </form> 
      <div class="formentrieserror"></div> 
      </body> 
     </html> 

    //registerDao.php..................................// 


    <?php 



    class RegisterUserInfo{ 

     public $userName; 
     public $userPassword; 
     public $userEmail; 
    } 



    class userRegisterDao { 

     function RegisterUser($registration_info) { 
      include_once ("database.php"); 

      $qry = "insert into userdetails(
        userName, 
        userPassword, 
        userEmail) 
        values('".$registration_info->userName."','" 
         .$registration_info->userPassword."','" 
         .$registration_info->userEmail."')"; 

      return Database::executeQuery($qry);     // return true or false 

     } 
    } 



    $userName = mysql_escape_string($_REQUEST ['userName']); 
    $userPassword = mysql_escape_string($_REQUEST ['userPassword']); 
    $userEmail = mysql_escape_string($_REQUEST ['userEmail']); 

    $registration_info = new RegisterUserInfo(); 

    $registration_info->userName=$userName; 
    $registration_info->userPassword=$userPassword; 
    $registration_info->userEmail=$userEmail; 


    $dao = new userRegisterDao(); 
    $insert = $dao->RegisterUser($registration_info); 

    if($insert===true){ 

     echo "correct"; 
    } 
    else 
     echo "invalid"; 
    ?> 
+0

왜 '데이터베이스'클래스에서 요청하지 않습니까? 즉, 반환 된 오류를 확인하지 않는 이유는 무엇입니까? 우리는 어떤 API를 사용하는지 알지 못합니다. 그것의 외모에서 보면'mysql_escape_string'과 다른'MySQL_ * '을 사용하면 OOP가 쓸모 없게됩니다. mysql_query를 직접 사용할 수도있다. –

+0

왜 '' 태그 아래에'$ (function() {'? – NoobEditor

+0

)을 숨겨 놓지 않았습니까? 쿼리를 작성하기 위해 문자열 interop을 사용하지 마십시오. (http://stackoverflow.com/questions/60174/how-can -i-prevent-sql-injection-in-php? rq = 1) – Dan

답변

2

변경 내가 오류 처리기, 단지 성공 핸들러이 많이 ... Ajax를 볼이

$userName = mysql_escape_string($_REQUEST ['username_reg']); 
              /* changed ^^ */ 
    $userPassword = mysql_escape_string($_REQUEST ['userpass_reg']); 
              /* changed ^^ */ 
    $userEmail = mysql_escape_string($_REQUEST ['useremail_reg']); 
              /* changed ^^ */ 
+0

당신의 대답이 되십시오! –

0

이 라인

$userName = mysql_escape_string($_REQUEST ['userName']); 
    $userPassword = mysql_escape_string($_REQUEST ['userPassword']); 
    $userEmail = mysql_escape_string($_REQUEST ['userEmail']); 

. 왜 PHP는 아약스에 오류를 반환하고 콘솔 IE console.log (some_error)에 출력하지 마십시오. 앞으로 디버깅이 훨씬 쉬워 질 것입니다.

또한 SQL 예외 처리가 없다는 것을 알 수 있습니다. 삽입을 시도하는 동안 해당 이름의 열이 없다는 것을 알았을 것입니다.

앞으로 몇 가지 디버깅 팁, 행운을 빌어 요.

관련 문제