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

标签 php html forms

我正在尝试为 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"; } 
 }
}
 ?> 

谢谢!三菱商事

最佳答案

一组复选框是最合适的。通过在复选框名称中使用 [],PHP 会自动将它们解析为 native 数组。

   <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;

输出(如果全部选中)

Selected Projects: Web, Digital, Consultancy

关于php - 将复选框添加到 PHP POST 电子邮件表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17304420/

相关文章:

php - Ajax 在数据库中插入 null 值

javascript - 如何使用 svg 多边形自定义属性 (data-*) 来设置这些相同多边形的样式?

html - 使中央 div 倾斜且背景图像不倾斜,从而在页面中心下方创建垂直对 Angular 线效果

javascript - 填充表单

visual-studio - 在 .net 中更改表单的最大宽度或最大高度

php - 从 mysql 表中选择日期大于或等于今天的记录

php - 需要有关 PHP 循环中使用的特定 MySQL 查询的帮助

php - 将 CodeIgniter 语言文件转换为 .po(用于 gettext)

javascript - Chrome 扩展 : Refresh popup. html 到新的 html 页面

PHP 单选按钮获取两个值