2013-03-06 1 views
0

동일한 PHP 파일을 처리하기 위해 사이트에서 두 개의 다른 문의 양식이 있습니다. 이 코드는 첫 번째 양식의 숨겨진 필드 값이 "1"이고 두 번째 양식의 숨겨진 필드 값이 "2"인 코드의 한 섹션에서이 코드를 사용하고 싶습니다.숨겨진 필드가 작동하지 않는 PHP 문의 양식

if ($_POST['process']=='1'){} 

내가 무슨 일을 하든지이 코드를 작동시키지 않아도됩니다. 위의 코드를 제거해 보았습니다. 문의 양식은 정상적으로 제출됩니다. 내가 시도한 또 다른 것은 숨겨진 값을 텍스트 필드로 변경하여 실제로 값이 표시되었는지 확인하는 것이 었습니다. 또한 '프로세스'숨겨진 필드 값을 변수로 포함시켜 전자 메일로 보냈습니다.이 전자 메일은 상황이 이상하게 들릴 수도 있습니다. 변수의 값은 전자 메일에서 공백으로 나타납니다. 여기서 내가 뭘 잘못하고 있니? 여기 내 코드입니다 : 아주 간단하게하기 위해, 다른 양식을 처리 할 코드의 두 번째 비트를 제거했습니다

if(!$_POST) exit; 
    function remove_non_numeric($string) { 
    return preg_replace("/[^0-9.]/", "", $string); 
    } 

    function isEmail($email) { 
    return preg_match("/^(?!.{255,})(?!.{65,}@)([!#-'*+\/-9=?^-~-]+)(?>\.(?1))*@(?!.*[^.]  {64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?\.){1,126}[a-z]{2,6}$/iD", $email); 
    } 
    if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n"); 

    if ($_POST['process']=='1'){ 

$name  = $_POST['name']; 
$email = $_POST['email']; 
$phone = remove_non_numeric($_POST['phone']); 
$comments = $_POST['comments']; 
$verify = $_POST['verify']; 
$process = $_POST['process']; 

if(trim($name) == '') { 
    echo '<div class="error_message">You must enter your name.</div>'; 
    exit(); 
} else if(trim($email) == '') { 
    echo '<div class="error_message">Please enter a valid email address.</div>'; 
    exit(); 
} else if(trim($phone) == '') { 
    echo '<div class="error_message">Please enter a valid phone number.</div>'; 
    exit(); 
} else if(!isEmail($email)) { 
    echo '<div class="error_message">You have entered an invalid e-mail address, please try again.</div>'; 
    exit(); 
} else if(trim($comments) == '') { 
    echo '<div class="error_message">Please enter your message.</div>'; 
    exit(); 
} else if(!isset($verify) || trim($verify) == '') { 
    echo '<div class="error_message">Please enter the verification number.</div>'; 
    exit(); 
} else if(trim($verify) != '4') { 
    echo '<div class="error_message">The verification number you entered is incorrect.</div>'; 
    exit(); 
} 

if(get_magic_quotes_gpc()) { 
    $comments = stripslashes($comments); 
} 

$address = "[email protected]"; 
$e_subject = 'You\'ve been contacted by ' . $name . '.'; 
$e_body = "You have been contacted by $name. Their message is below." . PHP_EOL . PHP_EOL; 
$e_content = "\"$process\"" . PHP_EOL . PHP_EOL; 
$e_reply = "You can contact $name via email, $email or via phone $phone"; 



$msg = wordwrap($e_body . $e_content . $e_reply, 70); 

$headers = "From: $email" . PHP_EOL; 
$headers .= "Reply-To: $email" . PHP_EOL; 
$headers .= "MIME-Version: 1.0" . PHP_EOL; 
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL; 
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL; 

if(mail($address, $e_subject, $msg, $headers)) { 

    // Email has sent successfully, echo a success page. 

    echo "<fieldset>"; 
    echo "<div id='success_page'>"; 
    echo "<h1>Email Sent Successfully.</h1>"; 
    echo "<p>Thank you <strong>$name</strong>, your message has been sent.</p>"; 
    echo "</div>"; 
    echo "</fieldset>"; 

} else { 

    echo 'ERROR!'; 
} 
} 

, 그러나 희망 당신은 내가 할 시도하고있는 무슨을 볼 수 있습니다. "process"라는 숨겨진 필드의 값이 "1"이면이 코드를 처리하십시오. 값이 2라면 다른 코드를 대신 처리해야합니다.

양식을 처리하는 일부 JQuery와도있다
<div id="contact"> 

      <div id="message"></div> 

      <form method="post" action="http://s423839726.onlinehome.us/franklinvineyard/contact.php" name="contactform" id="contactform"> 

      <fieldset> 

      <input type="text" name="process" id="process" size="4" value="1" /> 

      <label for="name">Your Name<span class="required">*</span></label> 
      <input name="name" type="text" id="name" size="30" value="" /> 

      <br /> 
      <label for="email">Email<span class="required">*</span></label> 
      <input name="email" type="text" id="email" size="30" value="" /> 

      <br /> 
      <label for="phone">Phone<span class="required">*</span></label> 
      <input name="phone" type="tel" id="phone" size="30" value="" /> 


      <br /> 
      <label for="comments">Comments<span class="required">*</span></label> 
      <textarea name="comments" cols="40" rows="15" id="comments" style="width: 350px;"></textarea> 

      <label>Are you human?<span class="required">*</span></label> 

      <label class="accesskey" for="verify">&nbsp;&nbsp;&nbsp;3 + 1 =</label> 
      <input class="accesskey" name="verify" type="text" id="verify" size="4" value="" style="width: 30px;" /><br /><br /> 

      <input type="submit" class="submit" id="submit" value="submit" /> 

      </fieldset> 

      </form> 
     </div><!--end contact--> 

이 ...이 문제가 될 수 :

여기에 코드의 HTML 부분입니까?

jQuery(document).ready(function(){ 

    $('#contactform').submit(function(){ 

     var action = $(this).attr('action'); 

     $("#message").slideUp(750,function() { 
     $('#message').hide(); 

      $('#submit') 
      .attr('disabled','disabled'); 
    if($('#process').val()=='1'){ 
     $.post(action, { 
      name: $('#name').val(), 
      email: $('#email').val(), 
      phone: $('#phone').val(), 
      comments: $('#comments').val(), 
      verify: $('#verify').val() 
     }, 
      function(data){ 
       document.getElementById('message').innerHTML = data; 
       $('#message').slideDown('slow'); 
       $('#contactform img.loader').fadeOut('slow',function(){$(this).remove(); 
                     }); 
       $('#submit').removeAttr('disabled'); 
       if(data.match('success') !== null) $('#contactform').slideUp('slow'); 

      } 
     ); 
    else{ 
     $.post(action, { 
      name: $('#name').val(), 
      email: $('#email').val(), 
      phone: $('#phone').val(), 
      friend: $('#friend').val(), 
      search: $('#search').val(), 
      signage: $('#signage').val(), 
      vineyard: $('#vineyard').val(), 
      newspaper: $('#newspaper').val(), 
      other: $('#other').val(), 
      comments1: $('#comments-survey1').val(), 
      comments2: $('#comments-survey2').val(), 
      comments3: $('#comments-survey3').val(), 
      verify: $('#verify').val() 
     }, 
     function(data){ 
       document.getElementById('message').innerHTML = data; 
       $('#message').slideDown('slow'); 
       $('#contactform img.loader').fadeOut('slow',function(){$(this).remove(); 
                     }); 
       $('#submit').removeAttr('disabled'); 
       if(data.match('success') !== null) $('#contactform').slideUp('slow'); 

      } 
     ); 

     }); 

     return false; 
     }); 
    }); 

}); 
+1

당신의 HTML은 또한 –

+0

[ '과정']'에코 $ _POST를 추가 표시, 코드의 다른 부분에서'하고 있습니다 값이 어딘가에서 변화하는지보십시오. – oktopus

+0

양식을 사용하여 HTML을 보내십시오. – michi

답변

1

를 통해 액세스 할 수있는 POST 또는 GET 매개 변수로 if($_REQUEST['process']==1)를 사용하여 테스트 할 수 있습니다 귀하의 자바 스크립트에 제출하고 양식 처리기에 모든 양식 필드를 통과하지. 이 문제를 해결하려면 다음을 대체 :이와

$.post(action, { 
      name: $('#name').val(), 
      email: $('#email').val(), 
      phone: $('#phone').val(), 
      comments: $('#comments').val(), 
      verify: $('#verify').val() 
     }, 

을 :

$.post(action, $('#contactform').serialize(), 
+0

이것은 큰 도움이되었습니다. 충분히 고마워 할 수 없어! 나는이 문제로 너무 오랫동안 벽에 머리를 두드렸다. – hyphen

0

간단하게하려면 당신은 차단된다 REQUEST

+0

그의 HTML은'

+0

고마워요. –

+0

같은 결과로 $ _REQUEST를 사용해 보았습니다. – hyphen