繁体   English   中英

添加复选框到PHP POST电子邮件表单

[英]Adding checkboxes to PHP POST email form

我正在尝试为wordpress构建一个表单。 我过去使用过插件,但我需要对某些特定样式进行最大程度的控制。 我还不是很擅长PHP,所以我很难尝试在脚本中添加复选框..我已经删除了我的尝试并将复选框保留在html中,但不是在PHP中 - 有人可以告诉我最好的方法在发送的电子邮件中显示任何选中的复选框? 其他一切都在运作。

html:

    <form method="post" action="<?php bloginfo('template_directory'); ?>/contact.php">

 <h3>Your Details</h3>

<div class="formrow">
    <input type="text" name="Name" maxlength="99" id="fullname" placeholder="Name" />
    <input type="email" name="Email" maxlength="99"placeholder="Email Address" />
    <input type="tel" name="Phone" maxlength="25" placeholder="Phone Number" />
</div>

<h3>Project Type</h3>

<div class="formrow">
    <fieldset>
        <input type="checkbox" name="project1" value="Web">
       <label for="type1">Web</label>
        <input type="checkbox" name="project2" value="Digital">
       <label for="type2">Digital</label>
        <input type="checkbox" name="project3" value="Consultancy">
       <label for="type3">Consultancy</label> 
    </fieldset> 
</div>

 <table align=center> 
 <tr><td colspan=2><strong>Contact us using this form:</strong></td></tr> 
 <tr><td>Department:</td><td><select name="sendto"> <option value="general@mycompany.com">General</option> <option value="support@mycompany.com">Support</option> <option value="sales@mycompany.com">Sales</option> </select></td></tr> 


 <tr><td>Company:</td><td><input size=25 name="Company"></td></tr> 

 <tr><td>Subscribe to<br> mailing list:</td><td><input type="radio" name="list" value="No"> No Thanks<br> <input type="radio" name="list" value="Yes" checked> Yes, keep me informed<br></td></tr> 
 <tr><td colspan=2>Message:</td></tr> 
 <tr><td colspan=2 align=center><textarea name="Message" rows=5 cols=35></textarea></td></tr> 
 <tr><td colspan=2 align=center><input type=submit name="send" value="Submit"></td></tr> 
 <tr><td colspan=2 align=center><small>A <font color=red>*</font> indicates a field is required</small></td></tr> 
 </table>

 </form> 

PHP:

<?php 
 $to = $_REQUEST['sendto'] ; 
 $from = $_REQUEST['Email'] ; 
 $name = $_REQUEST['Name'] ; 
 $headers = "From: $from"; 
 $subject = "Web Contact Data"; 

 $fields = array(); 
 $fields{"Name"} = "Name"; 
 $fields{"Company"} = "Company"; 
 $fields{"Email"} = "Email"; 
 $fields{"Phone"} = "Phone"; 
 $fields{"list"} = "Mailing List"; 
 $fields{"Message"} = "Message"; 

 $body = "We have received the following information:\n\n"; foreach($fields as $a => $b){   $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]); } 

 $headers2 = "From: noreply@YourCompany.com"; 
 $subject2 = "Thank you for contacting us"; 
 $autoreply = "Thank you for contacting us. Somebody will get back to you as soon as possible, usualy within 48 hours. If you have any more questions, please consult our website at www.oursite.com";

 if($from == '') {print "You have not entered an email, please go back and try again";} 
 else { 
 if($name == '') {print "You have not entered a name, please go back and try again";} 
 else { 
 $send = mail($to, $subject, $body, $headers); 
 $send2 = mail($from, $subject2, $autoreply, $headers2); 
 if($send) 
 {print "Success";} 
 else 
 {print "We encountered an error sending your mail, please notify webmaster@YourCompany.com"; } 
 }
}
 ?> 

谢谢! MC

一系列复选框最合适。 通过在复选框名称中使用[] ,PHP将自动将它们解析为本机数组。

   <input type="checkbox" name="projects[]" value="Web">
   <label for="type1">Web</label>
   <input type="checkbox" name="projects[]" value="Digital">
   <label for="type2">Digital</label>
   <input type="checkbox" name="projects[]" value="Consultancy">
   <label for="type3">Consultancy</label> 

在PHP方面:

$selectedProjects  = 'None';
if(isset($_POST['projects']) && is_array($_POST['projects']) && count($_POST['projects']) > 0){
    $selectedProjects = implode(', ', $_POST['projects']);
}

$body .= 'Selected Projects: ' . $selectedProjects;

输出(如果全部选中)

精选项目:网络,数字,咨询

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM