2014-07-12 5 views
-1

안녕하세요 저는 HTML 형식을 가지고 있습니다. 자바 스크립트로 입력 필드의 유효성을 검사하고 모두 사실이면 데이터베이스에 양식 입력 필드를 추가하는 PHP 함수를 호출하고 싶습니다. 양식에 onsubmit 태그를 추가했지만 PHP 함수는 어느쪽으로 든 호출됩니다. 여기에 지금까지 한 일이다자바 스크립트 유효성 검사 후 PHP 함수 호출

signup.php 현재 매번

<body> 
     <form method="post" action="student_signup.php" onsubmit="return validateForm()"> 
         <table> 
          <tr> 
           <td> Όνομα:</td> 
           <td><input type="text" name="name" id="name" onblur="validateName('name')"> </td> 
           <td><span id="nameError" style="display: none;"></span> <td> 
          </tr> 
          <tr> 
           <td> Επώνυμο:</td> 
           <td><input type="text" name="surname" id="surname" onblur="validateName('surname')"> </td> 
           <td><span id="surnameError" style="display: none;"></span> <td> 
          </tr> 
          <tr> 
           <td> Username:</td> 
           <td><input type="text" name="username" id="username" onblur="validateName('username')"> </td> 
           <td><span id="usernameError" style="display: none;"></span> <td> 
          </tr> 
          <tr> 
           <td> Κωδικός:</td> 
           <td><input type="password" name="password" id="password" onblur="validatePassword('password')" > </td> 
           <td><span id="passwordError" style="display: none;"></span> <td> 
          </tr> 
          <tr> 
           <td> Επαλήθευση κωδικού:</td> 
           <td><input type="password" name="passwordConfirm" id="passwordConfirm" onblur="validateConfirmPassword('password','passwordConfirm')"> </td> 
           <td><span id="passwordConfirmError" style="display: none;"></span> <td> 
          </tr> 

     </form> 
     </table> 
       . 
       . 
       . 
       . 
    </body> 

<php? 

if($_SERVER['REQUEST_METHOD']=='POST') 
{ 
     echo "adding to database"; 
    foo(); 

} 

php> 

validate.js

function validateForm() { 

    var error = 0; 

    if (!validateName('name')) { 
     document.getElementById('nameError').style.display = "block"; 
     error++; 
    } 


    if (!validateEmail('password')) { 
     document.getElementById('emailError').style.display = "block"; 
     error++; 
    } 
alert(error); 

    if (error > 0) { 
     return false; 
    } 
} 

alertbox 인쇄 비록 문이 경우 인쇄의 메시지 "2 ". 그래서 자바 스크립트 함수의 반환을 확인하고 그에 따라 PHP 함수를 호출 할 수 있나요? 아니면 서버 쪽에서 유효성 검사를해야합니까? 사용자가 무언가를 입력 할 때마다 기능이 트리거되고 오류가 포함 된 메시지가 입력 필드 옆에 인쇄됩니다. 서버 측에서 유효성 검사를 수행하면 이는 유용하지 않습니다. 클라이언트와 서버 양쪽에서 유효성 검사를 수행하는 것이 좋은 방법입니까? thx 사전에!

+0

질문을 읽는 중이고 불행히도 요점을 얻을 수 없습니다. :) [answer] (http://stackoverflow.com/questions/24687208/php-form-submits-before -javascript-validation/24687243 # 24687243) 도움이 될 수도 있습니다. 그렇지 않은 경우 마지막 단락을 명확히하십시오. – hex494D49

+0

항상 유효성 검사를 수행하십시오. 서버 쪽에서 클라이언트 쪽을 수행하는 것은 사용자에게 단지 납득할 만합니다. 자바 스크립트 유효성 검사를 둘러 보는 것은 매우 쉽습니다. 내가 그것을하고 싶은 방식은 모든 서버 측의 유효성을 검사 한 다음 ajax를 사용하여 검증을 위해 데이터를 보내는 것이다. 그렇게하면 코드를 2 번 코딩 할 필요가 없으며 둘 사이에는 차이가 없습니다. – ArtisticPhoenix

+0

@ArtisiticPhoenix 현재 각 입력 항목에 onblur 태그가 있으므로 사용자가 올바르게 입력하지 않으면주의해야합니다. 서버 측에서 이렇게하면 쓸모가 없습니다. 클라이언트 측과 서버 측 모두에게해야합니까? – JmRag

답변

0

이 질문은 좋은 연습 질문에 떨어진 코드와 관련된 질문에서 이동 한 것으로 보인다.

앞에서 설명한 것처럼 클라이언트 측 유효성 검사는 신뢰할 수 없습니다. 사용자는 JS를 손쉽게 조작하여 유효성을 무시하고 잘못된 정보를 보낼 수 있습니다. 이것이 서버 측 유효성 검사가 중요한 이유입니다. 사용자 입력에서 오류/악성 스크립트를 확인하고 데이터를 정리/거부 할 수 있습니다. 사용자 정보가 정확하거나 안전하지 않다고 신뢰하지 마십시오.

클라이언트 측 유효성 검사가 해당 위치에 있습니다. 사용자 경험을 향상시키는 데 사용해야합니다. 양식을 제출하기 전에 양식이 가득 차 있는지 확인하고, 누락 된 입력란을 강조 표시하고 메시지를 표시하지 않는 경우 사용하십시오. 클라이언트 측/JS는 사용자 환경을 향상시키는 용도로만 사용되어야하며 결코 사용하지 마십시오.

0

이 작업을 시도 할 수 있습니다 : -

<body> 
    <script> 
     var error = 0; 
     function validateForm() { 
      alert(error); 
      if (error > 0) { 
       return false; 
      } else{ 
       return true; 
      } 
     } 
     function validateName(value,fieldName){ 
      if(!value){ 
       error++; 
       if(fieldName === 'name'){ 
        document.getElementById('nameError').style.display = "block"; 
       } else if(fieldName === 'surname'){ 
        document.getElementById('surnameError').style.display = "block"; 
       } else if(fieldName === 'username'){ 
        document.getElementById('usernameError').style.display = "block"; 
       }else if(fieldName === 'password'){ 
        document.getElementById('passwordError').style.display = "block"; 
       } 
      } else{ 
       if(error>0){ 
        error--; 
       } 
        if(fieldName === 'name'){ 
        document.getElementById('nameError').style.display = "none"; 
       } else if(fieldName === 'surname'){ 
        document.getElementById('surnameError').style.display = "none"; 
       } else if(fieldName === 'username'){ 
        document.getElementById('usernameError').style.display = "none"; 
       }else if(fieldName === 'password'){ 
        document.getElementById('passwordError').style.display = "none"; 
       } 
      } 
     } 
     function validateConfirmPassword(value){ 
      if(value != document.getElementById('password').value){ 
       error ++; 
       document.getElementById('passwordConfirmError').style.display = "block"; 
      }else{ 
       if(error>0){ 
        error--; 
       } 
       document.getElementById('passwordConfirmError').style.display = "none"; 
      } 
     } 
    </script> 
    <form method="post" action="" onsubmit="return validateForm()"> 
     <table> 
      <tr> 
       <td> Όνομα:</td> 
       <td><input type="text" name="name" id="name" onblur="validateName(this.value,'name')"> </td> 
       <td><span id="nameError" style="display: none;">Name</span> <td> 
      </tr> 
      <tr> 
       <td> Επώνυμο:</td> 
       <td><input type="text" name="surname" id="surname" onblur="validateName(this.value,'surname')"> </td> 
       <td><span id="surnameError" style="display: none;">Surname</span> <td> 
      </tr> 
      <tr> 
       <td> Username:</td> 
       <td><input type="text" name="username" id="username" onblur="validateName(this.value,'username')"> </td> 
       <td><span id="usernameError" style="display: none;">username</span> <td> 
      </tr> 
      <tr> 
       <td> Κωδικός:</td> 
       <td><input type="password" name="password" id="password" onblur="validateName(this.value,'password')" > </td> 
       <td><span id="passwordError" style="display: none;">Password</span> <td> 
      </tr> 
      <tr> 
       <td> Επαλήθευση κωδικού:</td> 
       <td><input type="password" name="passwordConfirm" id="passwordConfirm" onblur="validateConfirmPassword(this.value)"> </td> 
       <td><span id="passwordConfirmError" style="display: none;">confirm password</span> <td> 
      </tr> 
     </table> 
     <input type="submit"></input> 
    </form> 
</body> 
관련 문제