Еще одна проблема с загрузкой файлов query mobile

#php #forms #email #jquery-mobile #attachment

#php #формы #Адрес электронной почты #jquery-мобильный #вложение

Вопрос:

Прежде всего, я видел так много предложений по подобным проблемам, однако я не нашел ни одного, который бы точно соответствовал тому, что я пытаюсь сделать.

У меня есть форма, которая отправляет сообщения в отправку электронной почты на PHP, и в конце формы я хотел бы, чтобы у пользователя была возможность прикрепить несколько фотографий либо из приложения камеры, либо из галереи (я читал, что iPhone не разрешают доступ к приложению камеры, но андроиды разрешают) иотправьте все это в милом маленьком электронном письме. Я продолжаю получать неопределенную ошибку индекса во всех моих строках вложения. Теперь я исчерпал свои возможности по устранению неполадок с копированием и теперь обратился к людям, которые на самом деле знают намного больше о синтаксисе PHP, чем я. Вот конец моей формы, где находится раздел вложений (вся страница довольно обширная и сложная, и я могу отобразить при необходимости, но это единственная часть, которая вызывает у меня головную боль …):

 <form data-ajax="false" method="post" action="mo-mail.php" enctype="multipart/form-data">
  

(все остальные варианты, а затем …)

 <label for="attachments">Upload Photos:</label>
            <input type="file" name="attachment1" id="attachment1" class="ui-input-text" />
            <input type="file" name="attachment2" id="attachment2" class="ui-input-text" />
            <input type="file" name="attachment3" id="attachment3" class="ui-input-text" />
            <input type="file" name="attachment4" id="attachment4" class="ui-input-text" />
            <input type="file" name="attachment5" id="attachment5" class="ui-input-text" />
            <p>*Please only press the Submit button once. Large sized photos require longer time to upload</p>
<input type="submit" name="submit" value="Submit Request" data-disabled="false">
  

Тогда есть моя страница PHP целиком:

 <?php

$MOfirstname = $_POST['MOfirstname'];
$MOlastname = $_POST['MOlastname'];
$MOcompany = $_POST['MOcompany'];
$MOemail = $_POST['MOemail'];
$MOphone = $_POST['MOphone'];
$MOmodelnumber = $_POST['MOmodelnumber'];
$MOvoltage = $_POST['MOvoltage'];
$MOoperation = $_POST['MOoperation'];
$MOfused = $_POST['MOfused'];
$MOtriptype = $_POST['MOtriptype'];
$MOfusesize = $_POST['MOfusesize'];
$MOquantity = $_POST['MOquantity'];
$MOcomments = $_POST['MOcomments'];
$MOdelivery = $_POST['MOdelivery'];
$MOmailinglist = $_POST['MOmailinglist'];
$MO_Function = implode(", ", $_POST['MO_Function']);
$MOquote = implode(", ", $_POST['MOquote']);
$MOAux = implode(", ", $_POST['MOAux']);
$MOAuxSwitchSize = $_POST['MOAuxSwitchSize'];
$MOAuxShuntTripVoltage = $_POST['MOAuxShuntTripVoltage'];
$MOBellAlarm_OTS_Voltage = $_POST['MOBellAlarm_OTS_Voltage'];
$MOBellAlarm_OTS_Operation = $_POST['MOBellAlarm_OTS_Operation'];

$attachment1 = $field_file = $_POST['attachment1'];
$tmpName1 = $_FILES['attachment1']['tmp_name1'];
$fileType1 = $_FILES['attachment1']['type1'];
$fileName1 = $_FILES['attachment1']['name1'];
$attachment2 = $field_file = $_POST['attachment2'];
$tmpName2 = $_FILES['attachment2']['tmp_name2'];
$fileType2 = $_FILES['attachment2']['type2'];
$fileName2 = $_FILES['attachment2']['name2'];
$attachment3 = $field_file = $_POST['attachment3'];
$tmpName3 = $_FILES['attachment3']['tmp_name3'];
$fileType3 = $_FILES['attachment3']['type3'];
$fileName3 = $_FILES['attachment3']['name3'];
$attachment4 = $field_file = $_POST['attachment4'];
$tmpName4 = $_FILES['attachment4']['tmp_name4'];
$fileType4 = $_FILES['attachment4']['type4'];
$fileName4 = $_FILES['attachment4']['name4'];
$attachment5 = $field_file = $_POST['attachment5'];
$tmpName5 = $_FILES['attachment5']['tmp_name5'];
$fileType5 = $_FILES['attachment5']['type5'];
$fileName5 = $_FILES['attachment5']['name5'];

if(empty($MOfirstname)||empty($MOemail)||empty($MOlastname)||empty($MOcompany)||empty($MOphone)) 
{
    echo "<div style ='font:36px Arial,tahoma,sans-serif;color:#ff0000'>Please click the Back button and fill in all contact information.</div>";
    exit;
}

$to = "myemail@privacy.com";
$email_from = 'myemail@privacy.com';
$email_subject = "New Mobile Submission";
$email_body = "You have received a new query from $MOfirstname $MOlastname at $MOcompany about a $MOmodelnumber. They can be reached at $MOphone or $MOemail.n".

    "Here is the request:n n
    Quantity: $MOquantity
    Model: $MOmodelnumber
    Frame Size: $MOvoltage
    Operation: $MOoperation
    Fused: $MOfused
    Fuse Size: $MOfusesize
    Trip Type: $MOtriptype
    Functions: $MO_Function
    Auxillary Devices: $MOAux
        Auxillary Switch Size: $MOAuxSwitchSize
        Auxillary Shunt Trip Voltage: $MOAuxShuntTripVoltage
        Bell Alarm/OTS Operation = $MOBellAlarm_OTS_Operation
        Bell Alarm/OTS Voltage: $MOBellAlarm_OTS_Voltage
    Additional Info: $MOcomments
    Mailing List: $MOmailinglist


    They would like a quote for the following:
        $MOquote

    With a desired delivery of:
        $MOdelivery";


$headers = "From:myemail@privacy.com rn";
$headers .= "Reply-To: $MOemail rn"; 
    {
          /* Reading file ('rb' = read binary)  */
          $file1 = fopen($tmpName1,'rb');
          $data1 = fread($file1,filesize($tmpName1));
          fclose($file1);

          $file2 = fopen($tmpName2,'rb');
          $data2 = fread($file2,filesize($tmpName2));
          fclose($file2);

          $file3 = fopen($tmpName3,'rb');
          $data3 = fread($file3,filesize($tmpName3));
          fclose($file3);

          $file4 = fopen($tmpName4,'rb');
          $data4 = fread($file4,filesize($tmpName4));
          fclose($file4);

          $file5 = fopen($tmpName5,'rb');
          $data5 = fread($file5,filesize($tmpName5));
          fclose($file5);

            /* a boundary string */
          $randomVal = md5(time());
          $mimeBoundary = "==Multipart_Boundary_x{$randomVal}x";

          /* Header for File Attachment */
          $headers .= "nMIME-Version: 1.0n";
          $headers .= "Content-Type: multipart/mixed;n" ;
          $headers .= " boundary="{$mimeBoundary}"";

          /* Multipart Boundary above message */
          $email_body = "This is a multi-part message in MIME format.nn" .
          "--{$mimeBoundary}n" .
          "Content-Type: text/plain; charset="iso-8859-1"n" .
          "Content-Transfer-Encoding: 7bitnn" .
          $email_body . "nn";

          /* Encoding file data */
          $data1 = chunk_split(base64_encode($data1));
          $data2 = chunk_split(base64_encode($data2));
          $data3 = chunk_split(base64_encode($data3));
          $data4 = chunk_split(base64_encode($data4));
          $data5 = chunk_split(base64_encode($data5));

          /* Adding attchment-file to message*/
          $email_body .= "--{$mimeBoundary}n" .
          "Content-Type: {$fileType};n" .
          " name="{$fileName1}"n" .
          "Content-Transfer-Encoding: base64nn" .
          $data1 . "nn" .
          "--{$mimeBoundary}--n";

          $email_body .= "--{$mimeBoundary}n" .
          "Content-Type: {$fileType};n" .
          " name="{$fileName2}"n" .
          "Content-Transfer-Encoding: base64nn" .
          $data2 . "nn" .
          "--{$mimeBoundary}--n";

          $email_body .= "--{$mimeBoundary}n" .
          "Content-Type: {$fileType};n" .
          " name="{$fileName3}"n" .
          "Content-Transfer-Encoding: base64nn" .
          $data3 . "nn" .
          "--{$mimeBoundary}--n";

          $email_body .= "--{$mimeBoundary}n" .
          "Content-Type: {$fileType};n" .
          " name="{$fileName4}"n" .
          "Content-Transfer-Encoding: base64nn" .
          $data4 . "nn" .
          "--{$mimeBoundary}--n";

          $email_body .= "--{$mimeBoundary}n" .
          "Content-Type: {$fileType};n" .
          " name="{$fileName5}"n" .
          "Content-Transfer-Encoding: base64nn" .
          $data5 . "nn" .
          "--{$mimeBoundary}--n";
    }
function IsInjected($str)
{
    $injections = array('(n )',
           '(r )',
           '(t )',
           '(
 )',
           '(
 )',
           '( )',
           '(	 )'
           );

    $inject = join('|', $injections);
    $inject = "/$inject/i";

    if(preg_match($inject,$str))
    {
      return true;
    }
    else
    {
      return false;
    }
}

if(IsInjected($MOemail))
{
    echo "Bad email value!";
    exit;
}
@mail($to,$email_subject,$email_body,$headers);
header("Location: thank-you.html");

?> 
  

Хорошо … в конечном счете, я бы хотел, чтобы вложения добавлялись в виде вложений в электронное письмо, но я не хочу, чтобы пользователю приходилось прикреплять все 5 фотографий…

… и я уверен, что есть гораздо более простой способ добиться этого, чем мой подход, но я открыт для предложений…

Ответ №1:

Хорошо, я думаю, отсутствие ответа было признаком того, что то, как я подходил к этому, было слишком сложным и / или не имело смысла … таким образом, никто не хотел его трогать.

Я смог заставить его работать с PHPMailer.