2013-05-21 5 views
0

나는 PHP 파일에 포함되는 두 가지 양식이 있습니다. 가시성은 onClick JS 토글 기능을 기반으로합니다. 토글은 훌륭하게 작동합니다.제출 두 전환 양식 중 하나만

http://localhost/?user_temp=f&pass_temp1=f&pass_temp2=ff&email_temp=f&answer1=3&submitbtn=Signup+Now 
: 만 밖으로 양식 중 하나를 작성하고 각각의 제출 버튼을 클릭했다 그러나 경우에, 나는 내가이 broswer에두고을 지정된 한 action.php 파일이 아닌 동일한 페이지로 다시 전송받을

그리고이 자바 스크립트 오류 : "형식 오류는

두 양식은 또한 MD5로 일부 데이터를 자신의 자바 스크립트를 가지고 sSecureUser은 회원 가입 양식에서 오는 document.hform.sSecureUser

정의되지 않은

흥미롭게도, 내가 중 하나를 제거 할 수 있다면. inlcude 양식은 제출 양식을 떠나 말할 수, 그것은 작동합니다.이 양식은 '자바 스크립트는 것 같다 clashi/...

나는 this을 시도했지만, 내 양식의 각 하나는 자바 스크립트를 사용하고 있기 때문에 나를 위해 작동하지 않았다. 도와주세요 그리고 미리 감사드립니다! ... 당신이 내 양식, 자바 스크립트, 또는 PHP 파일 중 하나를보고 싶으면 알려줘 ...

전환 코드 :

<div> 
<a href="/forms/login-form.php" onclick="toggle_visibility('login-div'); return false;">Login</a> 
    <div id="login-div" style="display:none"> 
     <?php include($_SERVER['DOCUMENT_ROOT'].'/forms/login-form.php');?>   
    </div> 
<a href="/forms/signup-form.php" onclick="toggle_visibility('signup-div'); return false;">Sign up</a> 
    <div id="signup-div" style="display:none"> 
     <?php include($_SERVER['DOCUMENT_ROOT'].'/forms/signup-form.php'); ?>   
    </div> 
     <script type="text/javascript"> 
      <!-- 
       function toggle_visibility(id) { 
         var e = document.getElementById(id); 
         if(e.style.display == 'block'){ 
          e.style.display = 'none'; 
          } 
         else{ 
          e.style.display = 'block'; 
          } 
       } 
      //--> 
     </script>  
</div> 

로그인 양식을 :

<div id="hasJavaScript1" style="display:none"> 
    <form name="login"> 
     Username: 
     <input type="text" name="user_temp" size=32 maxlength=32><br> 
     Password: 
     <input type="password" name="pass_temp" size=32 maxlength=32><br> 
     <input onClick="passResponse(); return false;" type="submit" name="submitbtn" value="Login now"> 
    </form> 

    <form action="/action/login-action.php" METHOD="POST" name="hform"> 
     <input type="hidden" name="secureuser"> 
     <input type="hidden" name="securepass"> 
    </form> 
</div> 

<script language="javascript" src="/js/md5.js"></script> 
<script language="javascript"> 
<!-- 
document.getElementById('hasJavaScript1').style.display = 'block'; 

function passResponse() { 
document.hform.secureuser.value = MD5(document.login.user_temp.value); 
document.hform.securepass.value = MD5(document.login.pass_temp.value); 
document.login.pass_temp.value = ""; 
document.hform.submit(); 

} 
// --> 
</script> 

가입 양식 : 내가 볼

<?php include ($_SERVER['DOCUMENT_ROOT'].'/functions/functions.php');?> 
<div id="hasJavaScript" style="display:none"> 
<form name="signup"> 
    <label>Username</label> <input type="text" name="user_temp" size=32 maxlength=32><span>alphanumeric, no spaces</span><br> 
    <label>Type password</label> <input type="password" name="pass_temp1" size=32 maxlength=32><span>alphanumeric, 8-12 long</span><br> 
    <label>Retype password</label> <input type="password" name="pass_temp2" size=32 maxlength=32><br> 
    <label>Email</label> <input type="text" name="email_temp" size=32 maxlength=32><br> 
    <label> What is: </label><?php $captchaArray = myCaptcha(); echo $captchaArray['equation'];?><br> 
    <label>Answer</label><input type="text" name="answer1"> 
    <input onClick="passResponse1(); return false;" type="submit" name="submitbtn" value="Signup Now"> 
</form> 

<form action="/action/signup-action.php" METHOD="POST" name="signup-hform"> 
     <input type="hidden" name="sSecureUser"> 
     <input type="hidden" name="sSecurePass1"> 
     <input type="hidden" name="sSecurePass2"> 
     <input type="hidden" name="secureEmail"> 
     <input type="hidden" name="answer2"> 
     <input type="hidden" name="checker" value=".<?php echo $captchaArray['answer'];?> ."> 
</form> 
</div> 


<script language="javascript" src="/js/md5.js"></script> 


    <script language="javascript"> 
<!-- 
document.getElementById('hasJavaScript').style.display = 'block'; 

function passResponse1() { 
document.signup-hform.sSecureUser.value = MD5(document.signup.user_temp.value); 
document.signup-hform.sSecurePass1.value = MD5(document.signup.pass_temp1.value); 
document.signup.pass_temp1.value = ""; 
document.signup-hform.sSecurePass2.value = MD5(document.signup.pass_temp2.value); 
document.signup.pass_temp2.value = ""; 
document.signup-hform.secureEmail.value = MD5(document.signup.email_temp.value); 
document.signup-hform.answer2.value = document.signup.answer1.value; 
document.signup.answer1.value = ""; 
document.signup-hform.submit(); 

} 
// --> 
</script> 
+0

몇 가지 코드를 보여줄 수 있습니까 ??? –

+0

관심을 가져 주셔서 감사합니다. @ManishJangir – JonathanScialpi

+0

여러 양식을 사용하여 성취하려는 것을 이해하지 못합니다. 목적은 무엇입니까? – Revent

답변

0

하나의 문제는 당신이 어떤 값 속성이나 값을 지정하지 않는다는 것입니다 숨겨진 입력란 :

<input type="hidden" name="sSecureUser"> 
<input type="hidden" name="sSecurePass1"> 
<input type="hidden" name="sSecurePass2"> 
<input type="hidden" name="secureEmail"> 
<input type="hidden" name="answer2"> 

하지만 JS에서는 값 속성에 액세스하려고합니다.

document.hform.sSecureUser.value = ... 

값을 추가해보십시오. 또한 숨겨진 양식 ID를 부여하고 document.hform.sSecureUser 구문 대신 document.getElementById() 구문을 사용합니다.

양식이 제출되면 첫 번째 양식의 동작을 숨기고 두 번째 양식의 숨겨진 필드 값을 채운 다음 제출하십시오. 두 스크립트 모두 양식 "hform"에 대해 동일한 이름을 사용합니다. 그들은 유일해야합니다. 나는 그들에게 고유 한 이드를 줄 것이다. 당신은을 사용하고

<input type="hidden" name="checker" value=".<?php echo $captchaArray['answer'];?> ."> 

:

또 다른 가능한 문제는이 라인입니다. 문자열 연결의 경우에는 echo/print 문에 없습니다. 나는 다음과 같아야한다고 생각합니다 :

<input type="hidden" name="checker" value="<?php echo $captchaArray['answer'];?>"> 
+0

JS가 작동하는 방식은 document.hform.sSecureUser가 document.signup.user_temp.value의 값을 사용한다는 것입니다. (NON HIDDEN FORM에 정의되어 있음). 그 값은 hform에 전달됩니다 .... 제출물의 이름은. 당신 말이 맞아요. 두 번째 코드를 변경하고 코드를 업데이트합니다. 이제 signUP 제출 버튼을 클릭하는 동안에도 로그인 양식 만 제출합니다. 하지만 적어도 어떤 행동 페이지로 데려가는 중이 야 – JonathanScialpi

+0

자바 스크립트에 대해 잘못된 메신저를 수정하면 ^^ .. 지금 코드를 업데이트하면 오류가 발생합니다. @revent – JonathanScialpi

+0

자바 스크립트 함수도 고유 한 이름을 가져야합니다. – Revent

관련 문제