2012-11-13 2 views
1

나를 보여줄 수 있다면 도움이 필요합니다. 도움이 될 것입니다.PHP에서 여러 값의 체크 박스 가져 오기

PHP에서이 정보가 전자 메일로 전송 된 상태에서 확인란을 통해 표시되는 값이 하나 이상 늘어나려고합니다. 선택한 목록에있는 사람들을 개별적으로 적용 할 때 적용 할 수 있습니다.

내 코드는 &입니다. HTML 코드는 모두 잘 작동합니다. 프로그램이 선택한 목록 중 하나만 보낼 것입니다.

$ CH1, $ CH2, $ CH3, $ 메탄 (CH4), $ CH5

PHP

<?php 
if(isset($_POST['email'])) { 

    $email_to = ""; 
    $email_subject = ""; 


    function died($error) { 
     // Error Code 
     echo "We are very sorry, but there were error(s) found with the form you submitted. "; 
     echo "These errors appear below.<br /><br />"; 
     echo $error."<br /><br />"; 
     echo "Please go back and fix these errors.<br /><br />"; 
     die(); 
    } 

    // validation expected data exists 
    if(!isset($_POST['firstname']) || 
     !isset($_POST['lastname']) || 
     !isset($_POST['checkboxes']) || 
     !isset($_POST['gender']) || 
     !isset($_POST['email']) || 
     !isset($_POST['subject']) || 
     !isset($_POST['telephone']) || 
     !isset($_POST['message'])) { 
     died('We are sorry, but there appears to be a problem with the form you submitted.');  
    } 

    $firstname = $_POST['firstname']; // required 
    $lastname = $_POST['lastname']; // required 
    $ch1 = 'unchecked'; // required 
    $ch2 = 'unchecked'; // required 
    $ch3 = 'unchecked'; // required 
    $ch4 = 'unchecked'; // required 
    $ch5 = 'unchecked'; // required 
    $male_status = 'unchecked'; // required 
    $female_status = 'unchecked'; // required 
    $email_from = $_POST['email']; // required 
    $subject = $_POST['subject']; // required 
    $telephone = $_POST['telephone']; // required 
    $message = $_POST['message']; // required 

    $error_message = ""; 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    if(!preg_match($email_exp,$email_from)) { 
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
    } 
    $string_exp = "/^[A-Za-z .'-]+$/"; 
    if(!preg_match($string_exp,$firstname)) { 
    $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 
    } 
    if(!preg_match($string_exp,$lastname)) { 
    $error_message .= 'The Last Name you entered does not appear to be valid.<br />'; 
    } 
    if(!preg_match($string_exp,$subject)) { 
    $error_message .= 'The Subject you entered does not appear to be valid.<br />'; 
    } 

    if (isset($_POST['checkboxes'])) { 

    $selected_checkboxes = $_POST['checkboxes']; 

    if (isset($_POST['ch1'])) { 
     $ch1 = $_POST['checkboxes']; 

     if ($ch1 == 'googlechrome') { 
      $ch1 = 'checked'; 
     } 
    } 

    if (isset($_POST['ch2'])) { 
     $ch2 = $_POST['checkboxes']; 

     if ($ch2 == 'firefox') { 
      $ch2 = 'checked'; 
     } 
    } 

    if (isset($_POST['ch3'])) { 
     $ch3 = $_POST['checkboxes']; 

     if ($ch3 == 'safari') { 
      $ch3 = 'checked'; 
     } 
    } 

    if (isset($_POST['ch4'])) { 
     $ch4 = $_POST['checkboxes']; 

     if ($ch4 == 'internetexplorer') { 
      $ch4 = 'checked'; 
     } 
    } 

    if (isset($_POST['ch5'])) { 
     $ch5 = $_POST['checkboxes']; 

     if ($ch5 == 'opera') { 
      $ch5 = 'checked'; 
     } 
    } 
} 

    if (isset($_POST['gender'])) { 

    $selected_radio = $_POST['gender']; 

     if ($selected_radio == 'male') { 
      $male_status = 'checked'; 

     } 
     else if ($selected_radio == 'female') { 
      $female_status = 'checked'; 
     } 
    } 
    if(strlen($message) < 2) { 
    $error_message .= 'The Message you entered do not appear to be valid.<br />'; 
    } 
    if(strlen($error_message) > 0) { 
    died($error_message); 
    } 
    $email_message = "Form details below.\n\n"; 

    function clean_string($string) { 
     $bad = array("content-type","bcc:","to:","cc:","href"); 
     return str_replace($bad,"",$string); 
    } 

    $email_message .= "First Name: ".clean_string($firstname)."\n"; 
    $email_message .= "Last Name: ".clean_string($lastname)."\n"; 
    $email_message .= "Gender: ".clean_string($selected_radio)."\n"; 
    $email_message .= "Telephone: ".clean_string($telephone). 
"\n"; 
    $email_message .= "Email: ".clean_string($email_from). 
"\n"; 
    $email_message .= "Subject: ".clean_string($subject). 
"\n"; 
$email_message .= "Browsers Used: ".clean_string($selected_checkboxes)."\n"; 
    $email_message .= "Message: ".clean_string($message). 
"\n"; 


// create email headers 
$headers = 'From: '.$email_from."\r\n". 
'Reply-To: '.$email_from."\r\n" . 
'X-Mailer: PHP/' . phpversion(); 
@mail($email_to, $email_subject, $email_message, $headers); 
?> 

Thank you for contacting us. We will be in touch with you very soon. 

<?php 
} 
?> 

HTML

<form id="contact" name="contact" action="contact.php" method="post"> 
    <p> 
    <label for="firstname">First Name *<br> 
    </label> 
    <input type="text" name="firstname" maxlength="50" size="30" id="firstname" placeholder="First Name" required autofocus> 
    <label for="lastname"><br> 
     <br> 
     Last Name *<br> 
    </label> 
    <input type="text" name="lastname" maxlength="50" size="30" id="lastname" placeholder="Last Name" required> 
    <label for="email"><br> 
     <br> 
     Email Address *<br> 
    </label> 
    <input type="text" name="email" maxlength="80" size="30" id="email" placeholder="[email protected]" required> 
    <label for="telephone"><br> 
     <br> 
     Telephone <br> 
    </label> 
    <input type="text" name="telephone" maxlength="30" size="30" id="subject" placeholder="Phone Number" required> 
    <br> 
    <br> 
    <label for="subject">Subject *</label> 
    <br> 
    <input type="text" name="subject" maxlength="30" size="30" id="subject" placeholder="Hello" required> 
    <br> 
    <br> 
    <Input type = "Radio" Name ="gender" value= "Male">Male 
    <Input type = "Radio" Name ="gender" value= "Female" >Female 
    <br> 
    </p> 
    <p>&quot;What browser are you using, to view this website&quot;<br> 
    <Input type = "Checkbox" Name ="checkboxes" value="Google Chrome">Google Chrome 
    <Input type = "Checkbox" Name ="checkboxes" value="Firefox">Firefox 
    <Input type = "Checkbox" Name ="checkboxes" value="Safari">Safari 
    <Input type = "Checkbox" Name ="checkboxes" value="Internet Explorer" >Internet Explorer 
    <Input type = "Checkbox" Name ="checkboxes" value="Opera" >Opera 
    <br> 
    <br> 
    Message *<br> 
    </label> 
    <textarea name="message" maxlength="1000" cols="90" rows="6" id="message" placeholder="Type message here" required></textarea> 
    <br> 
    <input type="submit" value="Submit"> 
    </p> 
</form> 
+0

일반적인 해킹은 체크 박스'checkboxes [] '의 이름을 지정하는 것입니다. 분명히 이것이 선호되는 것보다 적습니다. 실제 답변은 다른 이름을 지정하는 것입니다. –

답변

4
<Input type = "Checkbox" Name ="checkboxes[]" value="Google Chrome">Google Chrome 
<Input type = "Checkbox" Name ="checkboxes[]" value="Firefox">Firefox 
<Input type = "Checkbox" Name ="checkboxes[]" value="Safari">Safari 
<Input type = "Checkbox" Name ="checkboxes[]" value="Internet Explorer" >Internet Explorer 
<Input type = "Checkbox" Name ="checkboxes[]" value="Opera" >Opera 
+0

나는 이것을했고,이 섹션에서 이메일에 다음과 같이 말했다 : "Array"예를 들어 Safari & Opera를 선택했는데 그런 일이 일어 났습니까? – magi4000

+0

체크 박스 값의 배열을보고 어떤 값이 설정되어 있는지 찾아야하기 때문입니다. 체크 박스 이름을 지정하면 배열을 반복 할 필요가 없으며 직접 이름을 사용할 수 있습니다. – Ben

+0

"전자 메일의 예" 아래 양식 세부 정보. 이름 : "" 성 : "" 성별 : 남성 전화 : "" 이메일 : "" 제목 : 안녕하세요 브라우저 사용 : 배열 -이 대해 무엇입니까? 메시지 : – magi4000

2

올바른 방법 ~까지 체크 박스에 다른 이름을 지정하는 것입니다. 텍스트를 클릭하거나 마우스를 가져 상자에 "연결"할 수 있도록

<input type="checkbox" name="chrome" value="Google Chrome" />Chrome 
<input type="checkbox" name="firefox" value="Firefox" />Firefox 
<input type="checkbox" name="safari" value="Safari" />Safari 
<input type="checkbox" name="ie" value="Internet Explorer" />IE 
<input type="checkbox" name="opera" value="Opera" />Opera 

은 참고하시기 바랍니다 <label> 태그는 여기에 매우 유용합니다.

<label for='cb1'> 
    <input id='cb1' type = "Checkbox" name ="chrome" value="Google Chrome" />Chrome 
</label> 

당신이 또한 라디오 버튼 작동

label:hover { background:orange; } 

처럼 스타일을 지정할 수 있습니다.


또한, (등 type, name, 속성이라고합니다) 당신의 속성의 대문자와 소문자를 혼합하지 않도록하는 것이 좋습니다. 가능한 모든 것을 소문자로 바꿔야합니다.

+0

$ ch1 = $ _POST [ 'checkboxes'];를 변경하려고했기 때문에 PHP를 변경하려면 어떻게해야합니까? ~ $ ch1 = $ _POST [ 'chrome']; 예를 들어 각각 하나씩이 작동하지 않았습니까? 어떤 생각 – magi4000

+0

괜찮아 이제 이걸 고쳤지만, 네 도움에 감사 해^_ ^ – magi4000

0

당신은 [] 체크 박스로 HTML에서 이름 매개 변수를 변경하는 경우 :

<Input type = "Checkbox" Name ="checkboxes[]" value="Google Chrome">Google Chrome 
<Input type = "Checkbox" Name ="checkboxes[]" value="Firefox">Firefox 
<Input type = "Checkbox" Name ="checkboxes[]" value="Safari">Safari 
<Input type = "Checkbox" Name ="checkboxes[]" value="Internet Explorer" >Internet Explorer 
<Input type = "Checkbox" Name ="checkboxes[]" value="Opera" >Opera 

그런 다음 $_POST['checkboxes'] 선택한 값의 배열을 포함됩니다.

선택되지 않은 확인란에 대해서는 아무 것도 반환하지 않으므로 선택한 값과 비교하기 위해 모든 값을 추적해야합니다.

관련 문제