【问题标题】:PHP Mailer Doesn't Send All FieldsPHP Mailer 不发送所有字段
【发布时间】:2013-11-20 08:09:10
【问题描述】:

我是 PHP 新手,我正在尝试创建一个 PHP 表单域,我有四个“复选框”,分别命名为 Output1、Output2、Output3 和 Output4,但是当我选择所有四个复选框时,它只发送一个而不发送给我所有四个值。

注意我也有其他字段,但我只是想为您提供输出的 HTML 表单信息。

这是 HTML:

 <form id="surveyForm" class="form" action="mailsurvey.php" method="post" name="surveyForm" enctype="multipart/form-data" onsubmit="return ValidateContactForm2();">
 <input id="Output1" type="checkbox" name="Output1" value="Isolated" />
 <input id="Output2" type="checkbox" name="Output2" value="Isolated" />
 <input id="Output3" type="checkbox" name="Output3" value="Isolated" />
 <input id="Output4" type="checkbox" name="Output4" value="Isolated" />
 </form>

PHP 代码:

 <?php 

 require("includes/class.phpmailer.php");
 require("includes/class.smtp.php");
 require("includes/class.pop3.php");

 if($_FILES['headshot']['name']!="")
 {

 $imgtype=explode('.',$_FILES['headshot']['name']);
 $len=sizeof($imgtype);
 $image_file=uniqid().'.'.$imgtype[$len-1];

 $tmppath='uploads/';

 move_uploaded_file($_FILES['headshot']['tmp_name'],$tmppath.$image_file);
 $file_path=$tmppath.$image_file;
 }
 else
 {                
      $file_path="";
 }

 if($_FILES['bodyshot']['name']!="")
 {

      $imgtype=explode('.',$_FILES['bodyshot']['name']);
      $len=sizeof($imgtype);
      $image_file=uniqid().'.'.$imgtype[$len-1];

      $tmppath='uploads2/';

      move_uploaded_file($_FILES['bodyshot']['tmp_name'],$tmppath.$image_file);
      $file_path2=$tmppath.$image_file;
 }
 else
 {                
      $file_path2="";
 }


 $mail = new PHPMailer();
 $mail->Host = "localhost";
 $mail->Mailer = "smtp";

 $name = $_POST['name'];
 $company = $_POST['company'];
 $email = $_POST['email'];
 $phone = $_POST['phone'];
 $comments = $_POST['Comments'];
 $totalpower = $_POST['Total_Power']." ".$_POST['Total_Power2']."           ".$_POST['Total_Power3']." ".$_POST['Total_Power4']." ".$_POST['Total_Power5'];
 $input = $_POST['Input']." ".$_POST['Input2']." ".$_POST['Input3']."      ".$_POST['Input4'];
 $strings = $_POST['Strings4']." ".$_POST['Strings3']." ".$_POST['Strings2']."      ".$_POST['Strings']; 
 $output = $_POST['Output1']." ".$_POST['Output2']." ".$_POST['Output3']."      ".$_POST['Output4'];
 $dimming = $_POST['Dimming4']." ".$_POST['Dimming3']." ".$_POST['Dimming2']."      ".$_POST['Dimming'];
 $packaging = $_POST['Packaging4']." ".$_POST['Packaging3']." ".$_POST['Packaging2']."      ".$_POST['Packaging'];

 $subject = "New Product Inquiry / Survey";
 $body = "Name: " .$name. "<br> ".
 "Company: " .$company. "<br>".
 "Phone: " .$phone."<br>".
 "Email: " .$email."<br><br><hr>".
 "Total Power: " .$totalpower."<br>".
 "Input: " .$input."<br>".
 "Strings: " .$strings."<br>".
 "Output: " .$output."<br>".
 "Dimming: " .$dimming."<br>".
 "Packaging: " .$packaging."<br>".
 "Comments: " .$comments."<br>"
 ;

 $mail->IsSMTP();
 $mail->From = 'support@domain.com';
 $mail->FromName = 'support@domain.com';
 $mail->Subject = "New Product Inquiry";
 $mail->AltBody = "To view the message, please use an HTML compatible email viewer!";                // optional, comment out and test

 if($file_path!="")
 {
 $mail->AddAttachment($file_path);
 }

 if($file_path2!="")
 {
      $mail->AddAttachment($file_path2);
 }

 $mail->MsgHTML($body);

 $mail->AddAddress('email@domain.com');

 if(!$mail->Send())
 {
      $msg = "Unable to send email";
 }
 else
 {
      $msg = header("location: thank-you2.php");
 }
 ?>

如果用户选择所有四个框,有人可以告诉我为什么此表单不会发送 ALL 输出字段。如果您有任何问题,请告诉我。

谢谢,

弗兰克

【问题讨论】:

  • ID 必须是唯一的,您不能对所有复选框使用 id="Output1"
  • Barmar 我更新了我的帖子并将 ID 更改为唯一,但表单仍然没有向我发送输出字段的所有数据。我只从所有四个框中得到一个值。还有其他建议吗?谢谢!
  • 我没想到会修复它,这就是为什么它是评论,而不是答案。我看不出你只得到一个复选框的任何理由,你应该得到所有被选中的复选框。可以将var_dump($_POST) 的输出添加到问题中吗?验证功能会改变它们吗?

标签: php html forms form-submit


【解决方案1】:

我弄清楚了我的问题是什么,以及我想发布这个答案以供其他人注意的原因。

我的问题是我正在处理错误的 PHP 文件。我的站点中有两个相同的 PHP 文件,一个位于几个文件夹下,一个位于站点的根目录下。有毛刺的那个是我应该一直在修改的那个,因为那是 LIVE 文件。当我上传一个由于错误而无法正常工作的文件时。我通过仔细检查表单页面的表单元素中的路径发现了这一点。

<form id="surveyForm" class="form" **action="subfolder/formmailer_scripts/mailsurvey.php"** method="post" name="surveyForm" enctype="multipart/form-data" onsubmit="return ValidateContactForm2();">

所以故事的重点是注意并确保您不要过度关注简单的事情。我在重新上传一个不需要的文件上浪费了大约一个小时。希望这对其他人有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 2020-01-08
    • 2018-03-22
    相关资源
    最近更新 更多