2013-05-03 5 views
0

Я использую этот код как форму для отправки, когда пользователь может прикрепить файл, и он будет отправлен по электронной почте. Мне было интересно, какой код я могу добавить, чтобы ограничить размер файлов вложений до 5 МБ. Я использую код из этого учебника ShotDev.Com. Благодарю.Ограничение размера почтовой формы PHP и файла

  <html> 
      <head> 
      <title>ShotDev.Com Tutorial</title> 
      </head> 
      <body> 
      <? 
       $strTo = $_POST["txtTo"]; 
        $strTo = "[email protected]"; 
       $strSubject = $_POST["txtSubject"]; 
        $strMessage1 = ($_POST["txtrar"]); 
       $strMessage2 = ($_POST["txtDescription"]); 
    $strMessage3 = ($_POST["coname"]); 
    $strMessage4 = ($_POST["address1"]); 
    $strMessage5 = ($_POST["address2"]); 

     $strMessage6 = ($_POST["city"]); 

      $strMessage7 = ($_POST["state"]); 

       $strMessage8 = ($_POST["zip"]); 

        $strMessage9 = ($_POST["country"]); 


    $strMessage10 = ($_POST["phone"]); 

    $strMessage11 = ($_POST["fax"]); 

//*** Uniqid Session ***// 
$strSid = md5(uniqid(time())); 

$strHeader = ""; 
$strHeader .= "From: ".$_POST["txtFormName"]."<".$_POST["txtFormEmail"].">\nReply-To: ".$_POST["txtFormEmail"].""; 

$strHeader .= "MIME-Version: 1.0\n"; 
$strHeader .= "Content-Type: multipart/mixed; boundary=\"".$strSid."\"\n\n"; 
$strHeader .= "This is a multi-part message in MIME format.\n"; 

$strHeader .= "--".$strSid."\n"; 
$strHeader .= "Content-type: text/html; charset=utf-8\n"; 
$strHeader .= "Content-Transfer-Encoding: 7bit\n\n"; 

$strHeader .= $strMessage."\n\n"; 


$strHeader .= $strMessage1."  \n\n "; 

    $strHeader .= $strMessage2."\n\n"; 

    $strHeader .= " <br> <br> Company Name: \n\n "; 

      $strHeader .= $strMessage3."\n\n"; 

      $strHeader .= " <br> <br>Address1: \n\n "; 

       $strHeader .= $strMessage4."\n\n"; 

       $strHeader .= " <br> <br>Address2: \n\n "; 
        $strHeader .= $strMessage5."\n\n"; 

         $strHeader .= " <br> <br>City: \n\n "; 
         $strHeader .= $strMessage6."\n\n"; 

          $strHeader .= " <br> <br>State: \n\n "; 
          $strHeader .= $strMessage7."\n\n"; 

           $strHeader .= " <br> <br>Zip: \n\n "; 
           $strHeader .= $strMessage8."\n\n"; 

            $strHeader .= "<br> <br>Country: \n\n "; 
            $strHeader .= $strMessage9."\n\n"; 

           $strHeader .= " <br> <br>Phone: \n\n "; 
          $strHeader .= $strMessage10."\n\n"; 
            $strHeader .= " <br> <br>Fax: \n\n "; 
           $strHeader .= $strMessage11."\n\n"; 




//*** Attachment ***// 
if($_FILES["fileAttach"]["name"] != "") 
{ 
    $strFilesName = $_FILES["fileAttach"]["name"]; 
    $strContent = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"]))); 

    $strHeader .= "--".$strSid."\n"; 
    $strHeader .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n"; 
    $strHeader .= "Content-Transfer-Encoding: base64\n"; 
    $strHeader .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n"; 
    $strHeader .= $strContent."\n\n"; 
} 


$flgSend = @mail($strTo,$strSubject,null,$strHeader); // @ = No Show Error // 

if($flgSend) 
{ 
    echo "Mail send completed."; 
} 
else 
{ 
    echo "Cannot send mail."; 
} 
?> 
</body> 
</html> 
<!--- This file download from www.shotdev.com --> 
+2

Ссылка: http://stackoverflow.com/questions/9153224/how-to-limit-file-upload-type-file-size-in-php –

+1

Возможно, было бы лучше, если бы вопрос добавлен до конца поста. – Freakyuser

ответ

1

$_FILES["fileAttach"]["size"] Следует указать размер вашего прикрепленного материала. Вы можете добавить условную проверку, чтобы убедиться, что она меньше ваших ограничений по размеру.

Например:

$MAX_SIZE = 5242880; // Some arbitrary size (in bytes) 

if($_FILES["fileAttach"]["size"] >= $MAX_SIZE) { 
    echo "File is too large!"; 
} 

else { 
    // Your send code here! 
} 

Он также может быть важно отметить, что РНР ограничивает максимальный размер загрузки, а также (upload_max_filesize в php.ini).

+0

Вы также можете добавить элемент HTML в свою форму, указав максимальный размер, но он не оценивает его, пока весь файл не будет загружен, поэтому он должен использоваться только как отказоустойчивый http://stackoverflow.com/questions/6327965/html-upload -max-file-size-does-not-seem-to-work –

+1

просто FYI: размер файла в $ _FILES ["fileAttach"] ["size"] будет в байтах –

+0

Почему слишком большой if ($ _ FILES [ "fileAttach"] ["size"] <$ MAX_SIZE) Возможно, вы ошибаетесь. Луи .. –

0
<?php 
$maxsize = 2097152; // set you file size here current size: 2 MB 
$count = 0; // set your counter here 
if($_FILES['uploaded_file']['size'] >= $maxsize){ 
    //file larger than allowed 
    //your rest of the code 

} else{ 

    mail($strTo,$strSubject,null,$strHeader); 
    $count = 1; //send mail and increment counter 

} 
if($count > 0) 
{ 
    echo "Mail send completed."; 
} 
else 
{ 
    echo "Cannot send mail."; 
} 
?> 
+0

вместо этого: echo «Файл слишком большой!»; Как я могу остановить форму отправки? – user2347566

+0

Попробуйте использовать код выше .. он будет работать. Вот что я сделал, я поставил почтовую функцию в состояние if. –

Смежные вопросы