PHPMailer文件上传,下拉列表和单选按钮失败

时间:2016-02-05 03:04:11

标签: php phpmailer

我尝试用教程修复它越多,我就越打破它,所以你们几乎是我最后的选择。

我有一个更简单的版本工作正常,联系表单不包括我在标题中指定的特定字段(单选按钮,下拉列表和文件上传)所以我想,他们是罪魁祸首。这是我的问题:

  • 很明显,我的表格根本没有发送(呃哈哈)
  • 每次刷新页面时,都会尝试重新发送。所以出于某种原因,它并没有在“失败”之后转储数据,并且我不断得到弹出窗口,说我有信息发送点击继续或取消等等等等等等。即使我转到网站中的另一个页面并刷新该页面(即主页)它仍然试图重新发送表单数据

请有人请查看此邮件代码并告诉我我做错了什么?

我的邮件程序

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
require_once 'phpmailer/PHPMailerAutoload.php';

if (isset($_POST['inputName']) && isset($_POST['inputEmail']) && isset($_POST['inputCompany']) && isset($_POST['inputPhone']) && isset($_POST['inputAddresss']) && isset($_POST['inputCity']) && isset($_POST['inputState']) && isset($_POST['inputZip']) && isset($_POST['inputProject']) && isset($_POST['inputYard']) && isset($_POST['inputPhoto']) && isset($_POST['inputMessage'])) {

//check if any of the inputs are empty
if (empty($_POST['inputName']) || empty($_POST['inputEmail']) ||  empty($_POST['inputPhone']) || empty($_POST['inputAddress']) || empty($_POST['inpuCity']) || empty($_POST['inputState']) || empty($_POST['inputZip']) || empty($_POST['inputMessage'])) {
    $data = array('success' => false, 'message' => 'Please fill out the form completely.');
    echo json_encode($data);
    exit;
}

//Get the uploaded file information
$name_of_uploaded_file = basename($_FILES['inputProject']['name']);

//get the file extension of the file
$type_of_uploaded_file = substr($name_of_uploaded_file, strrpos($name_of_uploaded_file, '.') + 1);

$size_of_uploaded_file = $_FILES["inputProject"]["size"]/1024;//size in KBs

//Settings
$max_allowed_file_size = 500; // size in KB
$allowed_extensions = array("jpg", "jpeg", "png", "bmp");

//Validations
if($size_of_uploaded_file > $max_allowed_file_size )
{
  $errors .= "\n Size of file should be less than $max_allowed_file_size";
}

//------ Validate the file extension -----
$allowed_ext = false;
for($i=0; $i<sizeof($allowed_extensions); $i++)
{
  if(strcasecmp($allowed_extensions[$i],$type_of_uploaded_file) == 0)
  {
    $allowed_ext = true;
  }
}

if(!$allowed_ext)
{
  $errors .= "\n The uploaded file is not supported file type. ".
  " Only the following file types are supported: ".implode(',',$allowed_extensions);
}



//copy the temp. uploaded file to uploads folder
$path_of_uploaded_file = $upload_folder . $name_of_uploaded_file;
$tmp_path = $_FILES["inputProject"]["tmp_name"];

if(is_uploaded_file($tmp_path))
{
  if(!copy($tmp_path,$path_of_uploaded_file))
  {
    $errors .= '\n error while copying the uploaded file';
  }
}


//create an instance of PHPMailer
$mail = new PHPMailer();

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.live.com';                        // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'email@email.com';              // SMTP username
$mail->Password = 'secretstuff';                         // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to

$mail->addAttachment($path_of_uploaded_file, 'Project Photo');                // Add attachments
$mail->isHTML(true);                                  // Set email format to HTML

$mail->From = $_POST['inputEmail'];
$mail->FromName = $_POST['inputName'];
$mail->AddAddress('email@email.com'); //recipient 
$mail->Subject = "Quote from Nick & Sons LLC Online";
$mail->Body = "Name: " . $_POST['inputName'] . "\r\n\r\nCompany: " . $_POST['inputCompany'] . "\r\n\r\nPhone: " . $_POST['inputPhone'] . "\r\n\r\nAddress: " . $_POST['inputAddress'] . "\r\n\r\nCity: " . $_POST['inputCity'] . "\r\n\r\nState: " . $_POST['inputState'] . "\r\n\r\nZip: " . $_POST['inputZip'] . "\r\n\r\nProject Type: " . $_POST['inputProject'] . "\r\n\r\nYard Size: " . $_POST['inputYard'] . "\r\n\r\nProject Details: " . stripslashes($_POST['inputMessage']);

if (isset($_POST['ref'])) {
    $mail->Body .= "\r\n\r\nRef: " . $_POST['ref'];
}



if(!$mail->send()) {
    $data = array('success' => false, 'message' => 'Message could not be sent. Mailer Error: ' . $mail->ErrorInfo);
    echo json_encode($data);
    exit;
}

    $data = array('success' => true, 'message' => 'Thanks! We have received your message.');
    echo json_encode($data);

} else {

    $data = array('success' => false, 'message' => 'Please fill out the form completely.');
    echo json_encode($data);

}

我的Angular形式:

    <div class="col-xs-12"  ng-controller="QuoteController">
        <h1 class="contact-title">Let's Get Started!</h1>

        <p class="contact-sub-txt">Use the form below only for the purpose of requesting a quote for work you need. For all other general questions please refer to our <a href="#/contact">Contact Form</a> page.</p>

        <div class="alert alert-info clearfix">
            <div class="col-xs-3 col-sm-2 col-md-1">
                <i class="fa fa-info fa-fw info-icon"></i>
            </div>
            <div class="col-xs-9 col-sm-10 col-md-11">
                <h4>Disclaimer</h4>
                <em>All projects vary in different size and complexity. In many cases, we can't adequate assess the problem until it is visually inspected. However, this quote will give us a general idea of the problem and will help us prepare for the visual inspection.</em>
            </div>
        </div>

        <form ng-submit="submit(quoteform)" id="quote-form" role="form" name="quoteform" method="post" action=""  enctype="multipart/form-data">
            <span class="notice">All fields marked required <span class="required">*</span> mut be filled out.</span>
            <div class="row">
                <div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputName.$invalid && submitted }">
                    <label for="inputName">Name <span class="required">*</span></label>
                    <input ng-model="formData.inputName" type="text" name="inputName" placeholder="e.g. Jhon Smith" class="form-control form-control-success" id="name">
                </div>

                <div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="">
                    <label for="inputCompany">Company Name <span class="required">*</span></label>
                    <input ng-model="formData.inputCompany" type="text" name="inputCompany" placeholder="e.g. Angu Studio" class="form-control form-control-success" id="company">
                </div>

                <div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputEmail.$invalid && submitted }">
                    <label for="inputEmail">Email Address <span class="required">*</span></label>
                    <input ng-model="formData.inputEmail" type="email" name="inputEmail" placeholder="e.g. mail@example.com" class="form-control form-control-success" id="email">
                </div>

                <div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputPhone.$invalid && submitted }">
                    <label for="inputPhone">Phone Number <span class="required">*</span></label>
                    <input ng-model="formData.inputPhone" type="phone" name="inputPhone" placeholder="e.g. 555-945-0090" class="form-control form-control-success" id="phone">
                </div>
            </div>

            <div class="row">
                <div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputAddress.$invalid && submitted }">
                    <label for="inputAddress">Address <span class="required">*</span></label>
                    <input ng-model="formData.inputAddress" type="text" name="inputAddress" placeholder="e.g. 12 E. Main St" class="form-control form-control-success" id="address">
                </div>

                <div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputCity.$invalid && submitted }">
                    <label for="inputCity">City <span class="required">*</span></label>
                    <input ng-model="formData.inputCity" type="text" name="inputCity" placeholder="e.g. Harrisburg" class="form-control form-control-success" id="city">
                </div>

                <div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputState.$invalid && submitted }">
                    <label for="inputState">State <span class="required">*</span></label>
                    <select ng-model="formData.inputState" id="state" name="inputState" class="form-control form-control-success">
                        <option>Select One</option>
                        <option value="AL">Alabama</option>
                        <option value="AK">Alaska</option>
                        <option value="AZ">Arizona</option>
                        <option value="AR">Arkansas</option>
                        <option value="CA">California</option>
                        <option value="CO">Colorado</option>
                        <option value="CT">Connecticut</option>
                        <option value="DE">Delaware</option>
                        <option value="DC">District Of Columbia</option>
                        <option value="FL">Florida</option>
                        <option value="GA">Georgia</option>
                        <option value="HI">Hawaii</option>
                        <option value="ID">Idaho</option>
                        <option value="IL">Illinois</option>
                        <option value="IN">Indiana</option>
                        <option value="IA">Iowa</option>
                        <option value="KS">Kansas</option>
                        <option value="KY">Kentucky</option>
                        <option value="LA">Louisiana</option>
                        <option value="ME">Maine</option>
                        <option value="MD">Maryland</option>
                        <option value="MA">Massachusetts</option>
                        <option value="MI">Michigan</option>
                        <option value="MN">Minnesota</option>
                        <option value="MS">Mississippi</option>
                        <option value="MO">Missouri</option>
                        <option value="MT">Montana</option>
                        <option value="NE">Nebraska</option>
                        <option value="NV">Nevada</option>
                        <option value="NH">New Hampshire</option>
                        <option value="NJ">New Jersey</option>
                        <option value="NM">New Mexico</option>
                        <option value="NY">New York</option>
                        <option value="NC">North Carolina</option>
                        <option value="ND">North Dakota</option>
                        <option value="OH">Ohio</option>
                        <option value="OK">Oklahoma</option>
                        <option value="OR">Oregon</option>
                        <option value="PA">Pennsylvania</option>
                        <option value="RI">Rhode Island</option>
                        <option value="SC">South Carolina</option>
                        <option value="SD">South Dakota</option>
                        <option value="TN">Tennessee</option>
                        <option value="TX">Texas</option>
                        <option value="UT">Utah</option>
                        <option value="VT">Vermont</option>
                        <option value="VA">Virginia</option>
                        <option value="WA">Washington</option>
                        <option value="WV">West Virginia</option>
                        <option value="WI">Wisconsin</option>
                        <option value="WY">Wyoming</option>
                    </select>
                </div>

                <div class="form-group col-xs-12 col-sm-12 col-md-3 has-success" ng-class="{ 'has-error': quoteform.inputZip.$invalid && submitted }">
                    <label for="inputZip">Zip <span class="required">*</span></label>
                    <input ng-model="formData.inputZip" type="text" name="inputZip" placeholder="e.g. 23456" class="form-control form-control-success" id="zip">
                </div>
            </div>

            <div class="row">
                <div class="form-group col-xs-12 col-sm-12 col-md-3">
                    <label for="inputProject">Project Type <span class="required">*</span></label><br />
                    <label class="checkbox-inline c-input c-checkbox">
                        <input ng-model="formData.inputProject1" type="checkbox" name="inputProject[Lawn Care]" id="project-checkbox0" value="">
                        <span class="c-indicator"></span>
                        Lawn Care
                    </label>
                    <br />
                    <label class="checkbox-inline c-input c-checkbox">
                        <input ng-model="formData.inputProject2" type="checkbox" name="inputProject[Home Improvement]" id="project-checkbox1" value="">
                        <span class="c-indicator"></span>
                        Home Improvement
                    </label>
                </div>

                <div class="form-group col-xs-12 col-sm-12 col-md-3">
                    <label for="inputYard">Yard Size </label>
                    <input ng-model="formData.inputYard" type="text" name="inputYard" placeholder="e.g. .25 acres" class="form-control" id="yard">
                </div>

                <div class="form-group col-xs-12 col-sm-12 col-md-6">
                    <label for="inputPhoto">Project Photo </label><br />
                    <label class="file">
                        <input type="hidden" name="MAX_FILE_SIZE" value="100000">
                        <input ng-model="formData.inputPhoto" type="file" name="inputPhoto" class="form-control" id="photo">
                        <span class="file-custom"></span>
                    </label>
                </div>
            </div>

            <div class="row">
                <div class="form-group col-xs-12" ng-class="{ 'has-error': quoteform.inputMessage.$invalid && submitted }">
                    <label for="inputMessage">Project Details <span class="required">*</span></label>
                    <textarea ng-model="formData.inputMessage" name="inputMessage" class="form-control" rows="12" id="projDetails"></textarea>
                </div>
            </div>

            <div class="row">
                <div class="form-group col-lg-12">
                    <input type="hidden" name="save" value="contact">
                    <button type="submit" class="btn btn-primary bt-contact-submit" ng-disabled="submitButtonDisabled">Submit</button>
                </div>
            </div>
        </form>
        <p ng-class="result" class="alert">{{ resultMessage }}</p>
    </div>

0 个答案:

没有答案