2016-04-25 59 views
0

我想创建一个双页表单 - 第一页是可选的。它是一个提示开始。直到我开始添加PHPMailer之前,它一直在运行。现在,当我点击第一页上的第一个可选表单时,通过邮件程序提交它,然后将其所有验证/错误提交给我,如果我将错误if语句注释掉,就会正确发送电子邮件。两页表单提交首页

这是第一种可选的形式。它应该带你进入预估页面,这些值已经存储在表单中,所以你不必再重复一遍。

<form class="form-horizontal first-form" action="estimate.php"    method="post"> 
        <div class="form-group"> 
        <label for="inputMoveDate" class="col-xs-4 text-left">Move Date</label> 
        <div class="col-xs-8"> 
         <input type="text" name="date" class="form-control" id="datepicker"> 
        </div><!--col-xs-7--> 
        </div><!--form-group--> 
        <div class="form-group"> 
        <label for="pickUpZip" class="col-xs-4">Pick Up Zip</label> 
        <div class="col-xs-8"> 
         <input type="text" name="pickUpZip" class="form-control" id="pickUpZip" placeholder=""> 
        </div><!--col-xs-7--> 
        </div><!--form-group--> 
        <div class="form-group"> 
        <label for="dropOffZip" class="col-xs-4">Drop Off Zip</label> 
        <div class="col-xs-8"> 
         <input type="text" name="dropOffZip" class="form-control" id="dropOffZip" placeholder=""> 
        </div><!--col-xs-7--> 
        </div><!--form-group--> 
        <div class="form-group"> 
        <div class="col-xs-12"> 
         <button type="submit" class="btn btn-default center-block">Continue</button> 
        </div><!--col-sm-offset-2--> 
        </div><!--form-group--> 
       </form> 

Estimate.php第二页。文档顶部的PHP。

session_start(); 

if ($_SERVER["REQUEST_METHOD"]=="POST") { 
    $date = $_POST['date']; 
    $pickUpZip = $_POST['pickUpZip']; 
    $dropOffZip = $_POST['dropOffZip']; 
    $dwellingType = $_POST['dwellingType']; 
    $salutation = $_POST['salutation']; 
    $firstName = trim(filter_input(INPUT_POST, "first-name", FILTER_SANITIZE_STRING)); 
    $lastName = trim(filter_input(INPUT_POST, "last-name", FILTER_SANITIZE_STRING)); 
    $email = trim(filter_input(INPUT_POST, "email", FILTER_SANITIZE_SPECIAL_CHARS)); 
    $phone = $_POST['phone']; 
    $pickUpAddress = $_POST['pickUpAddress']; 
    $pickUpCity = $_POST['pickUpCity']; 
    $pickUpState = $_POST['pickUpState']; 
    $comments = $_POST['comments']; 

    $emailBody ="From: $salutation $firstName $lastName\n 
     Phone Number: $phone\n 
     E-Mail: $email\n 
     Message:\n $comments 
     \n \n 
     Move Date: $date\n 
     Pick Up Address: $pickUpAddress\n 
     Pick Up City: $pickUpCity\n 
     Pick Up State: $pickUpState\n 
     Pick Up Zip: $pickUpZip\n 
     \n 
     Drop Off Zip: $dropOffZip\n 
     Dwelling Type: $dwellingType\n"; 

    if($firstName == "" || $email == "" || $lastName == "") { 
     echo "Please fill in the required forms: first name, last name, and email."; 
     exit; 
    } 
    if ($_POST["address"] != "") { 
     echo "Bad form input"; 
     exit; 
    } 

    require('phpmailer/class.phpmailer.php'); 

    $mail = new PHPMailer; 

    if (!$mail->ValidateAddress($email)) { 
     echo 'Invalid email. Try again.'; 
     exit; 
    } 

    $mail->setFrom($email, $firstName); 
    $mail->addAddress('[email protected]', 'name here'); 

    $mail->isHTML(false); 

    $mail->Subject = 'Estimate Request Inquiry From ' . $firstName; 
    $mail->Body = $emailBody; 

    if(!$mail->send()) { 
     echo 'Message could not be sent.'; 
     echo 'Mailer Error: ' . $mail->ErrorInfo; 
     exit; 
    } 

    header("location:estimate.php?status=thanks"); 
} 

这里是表格HTML的开始和结束,亮点。

  <?PHP 
      if (isset($_GET["status"]) && $_GET["status"] == "thanks") { 
       echo "Thank you for your estimate request. We will return your inquiry soon! 
      </div>"; 
      } else { 
         ?> 
    <form class="form-horizontal first-form" action="estimate.php" method="post" style="margin: 0 45px;"> 

  <label for="date" class="col-xs-4 text-left">Move Date</label> 
           <div class="col-xs-8"> 
            <input type="text" class="form-control" id="datepicker" name="date" value="<?php echo $_POST["date"]; ?>"> 
           </div><!--col-xs-7--> 
           </div><!--form-group--> 
           <div class="form-group"> 
       <label for="pickUpZip" class="col-xs-4">Pick Up Zip</label> 
           <div class="col-xs-8"> 
            <input type="text" name="pickUpZip" class="form-control" id="pickUpZip" value="<?php echo $_POST["pickUpZip"]; ?>"> 
           </div><!--col-xs-7--> 
           </div><!--form-group--> 

           <div class="form-group"> 
           <label for="dropOffZip" class="col-xs-4">Drop Off Zip</label> 
           <div class="col-xs-8"> 
            <input type="text" name="dropOffZip" class="form-control" id="dropOffZip" value="<?php echo $_POST["dropOffZip"]; ?>"> 
           </div><!--col-xs-7--> 
           </div><!--form-group--> 

           <div class="col-xs-12"> 
            <button type="submit" id="submit" name="submit" class="btn btn-default center-block">Submit</button> 
           </div><!--col-sm-offset-2--> 
           </div><!--form-group--> 
          </form> 
          <?PHP 
           } 
          ?> 
+0

你只是在你的第二页上检查'if($ _SERVER [“REQUEST_METHOD”] ==“POST”){',并且你从第一页发布,所以它认为你是最终提交的,有几种方法可以解决这个问题,一种方法是在第一个表单上添加一个隐藏字段,然后在运行验证代码之前检查并确保第二页上不存在。 – cmorrissey

+0

这对我有意义。我试图通过使用if语句来实现它“如果这个隐藏的元素仍然是空白的,那么做所有这些事情。基本上包装其他所有这些if语句,而不是空白给出错误并退出。 ? –

回答

0

此行试图将每次发送电子邮件:

if(!$mail->send()) { 

,如果当它失败你的错误消息呼应。 您应该将整个块嵌套在if语句中,该if语句检查表单是否是从第2页提交的。您可以给提交按钮一个不同的值并检查它(即'submit1','submit2')。

+0

什么样的if语句?对不起,我是一个真正的初学者。事情是,第一种形式是完全可选的,没有必要,所以我正在努力如何继续传递这些值,如果他们在那里,但如果没有,等待第二个表单的提交。 –