Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 6 of 6
  1. #1
    New to the CF scene
    Join Date
    Mar 2013
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Question Php file attachment arrives as Zero kb

    I'm relatively new to php forms but have managed to get almost what I need working. I have downloaded several example forms and templates for the purpose of attaching files to the email sent. On the ones that fully work the attached file comes through but always as Zero kb. Has anyone had experience of this or knows why this is happening?

  • #2
    Regular Coder
    Join Date
    Jun 2009
    Posts
    134
    Thanks
    3
    Thanked 19 Times in 19 Posts
    If you want us to put in *free* effort for you, show that your are learning, or at least attempting to. Paste code that you think is causing the failure for a start..

  • #3
    Senior Coder
    Join Date
    Feb 2011
    Location
    Your Monitor
    Posts
    4,091
    Thanks
    51
    Thanked 506 Times in 493 Posts
    Quote Originally Posted by itxtme View Post
    show that your are learning
    Yes I could recommend that advice to you itxtme. How about you show that you're learning or that you are learning?
    My helpful sig is on vacation trying to loose some weight. It got a bit fat and caused a few problems but it will be back at some point!

  • #4
    New to the CF scene
    Join Date
    Mar 2013
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Php script used

    Apologies. New to forum threads as well! I've tried numerous files so didn't want to clog up thread. However, my current version is attached as zip file as it is too many chars to post into thread.
    Attached Files Attached Files

  • #5
    Senior Coder
    Join Date
    Feb 2011
    Location
    Your Monitor
    Posts
    4,091
    Thanks
    51
    Thanked 506 Times in 493 Posts
    Ah most folk here don't like downloading files and that includes me.

    Look at my sig and the php code box and check out the link about [php] tags. You'll realise thats how we like code displayed here.
    My helpful sig is on vacation trying to loose some weight. It got a bit fat and caused a few problems but it will be back at some point!

  • #6
    New to the CF scene
    Join Date
    Mar 2013
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Ok, here we go...unsure which part would produce Zero kb attachments so this is all...file I uploaded was a jpeg and within parameters set for size limitation.

    PHP Code:

    // This will show in the browsers title bar and at the top of the form.
    $websitename="Upload Order Form"; 

    // Allowed file types. Please remember to keep the format of this array, add the file extensions you want
    // WITHOUT the dot. Please also be aware that certain file types (such as exe) may contain malware.
    $allowtypes=array("zip", "rar", "txt", "doc", "jpg", "png", "gif", "odt", "xml");

    // What's your email address? Seperate email addresses with commas for multiple email addresses.
    $myemail="mjperivan@gmail.com";

    // What priority should the script send the mail? 1 (Highest), 2 (High), 3 (Normal), 4 (Low), 5 (Lowest).
    $priority="2"; 

    // Should we allow visitors to attach files? How Many? 0 = Do not allow attachments,
    // 1 = allow only 1 file to be attached, 2 = allow two files etc.
    $allowattach="1"; 

    // Maximum file size for attachments in KB NOT Bytes for simplicity. MAKE SURE your php.ini can handel it,
    // post_max_size, upload_max_filesize, file_uploads, max_execution_time!
    // 2048kb = 2MB,       1024kb = 1MB,     512kb = 1/2MB etc..
    $max_file_size="1024";

    // Maximum file size for all attachments combined in KB. MAKE SURE your php.ini can handel it,
    // post_max_size, upload_max_filesize, file_uploads, max_execution_time!
    // 2048kb = 2MB,       1024kb = 1MB,     512kb = 1/2MB etc..
    $max_file_total="2048";

    // Value for the Submit Button
    $submitvalue=" Send Order "; 

    // Value for the Reset Button
    $resetvalue=" Reset Form ";

    // Default subject? This will be sent if the user does not type in a subject
    $defaultsubject="Subject"; 

    // Because many requested it, this feature will add a drop down box for the user to select a array of
    // subjects that you specify below. 
    // True = Use this feature, False = do not use this feature
    $use_subject_drop=false;

    // This is an array of the email subjects the user can pick from. Make sure you keep the format of
    // this array or you will get errors.
    // Look at <http://novahq.net/forum/showthread.php?t=38718> for examples on how to use this feature.
    $subjects=array("Department 1", "Department 2", "Department 3");

    // This is an array of the email addresses for the array above. There must be an email FOR EACH
    // array value specified above. You can have only 1 department if you want.
    // YOU MUST HAVE THE SAME AMMOUNT OF $subjects and $emails or this WILL NOT work correctly!
    // The emails also must be in order for what you specify above!
    // Seperate email addresses by a comma to send an email to multiple addresses.
    $emails=array("dept_1@domain.com", "dept_2@domain.com", "dept_3@domain.com");

    // This is the message that is sent after the email has been sent. You can use html here.
    // If you want to redirect users to another page on your website use this:
    // <script type=\"text/javascript\">window.location=\"http://www.sjpconnect.co.uk/UserContentStart.aspx\";</script>
    $thanksmessage="Thank you! Your email has been sent, we will respond shortly."; 

    /*
    //================================================================================
    * ! ATTENTION !
    //================================================================================
    : Don't edit below this line.
    */

    // Function to get the extension of the uploaded file.
    function get_ext($key) { 
        $key=strtolower(substr(strrchr($key, "."), 1));
        $key=str_replace("jpeg", "jpg", $key);
        return $key;
    }

    // Function used to attach files to the message
    function phattach($file, $name, $boundary) {
        
        $fp=fopen($file, "r");
        $str=fread($fp, filesize($file));
        $str=chunk_split(base64_encode($str));
        $message="--".$boundary."\n";
        $message.="Content-Type: application/octet-stream; name=\"".$name."\"\n";
        $message.="Content-disposition: attachment; filename=\"".$name."\"\n"; 
        $message.="Content-Transfer-Encoding: base64\n";
        $message.="\n";
        $message.="$str\n";
        $message.="\n";

        return $message;
    }

    //Little bit of security from people forging headers. People are mean sometimes :(
    function clean_msg($key) {
        $key=str_replace("\r", "", $key);
        $key=str_replace("\n", "", $key);
        $find=array(
            "/bcc\:/i",
            "/Content\-Type\:/i",
            "/Mime\-Type\:/i",
            "/cc\:/i",
            "/to\:/i"
        );
      $key=preg_replace($find, "", $key);
      return $key;
    }

    // Initilize some variables
    $error="";
    $sent_mail=false;

    // When the form is submitted
    If($_POST['submit']==true) {
        extract($_POST, EXTR_SKIP);

            // Check the form for errors
            If(trim($yourname)=="") { 
                $error.="You did not enter your name!<br />";
            }
            
            If(trim($youremail)=="") { 
                $error.="You did not enter your email!<br />";
            } Elseif(!preg_match("/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/", $youremail)) {
                $error.="Invalid email address.<br />";
            }

            If(trim($emailsubject)=="") {
                $emailsubject=$defaultsubject;
            }

            If(trim($yourmessage)=="") { 
                $error.="You did not enter a message!<br />";
            }
            
            // Verify Attchment info
            If($allowattach > 0) {
                
                // Get the total size of all uploaded files
                If((array_sum($_FILES['attachment']['size'])) > ($max_file_total*1024)) {
                    
                    $error.="The max size allowed for all your files is ".$max_file_total."kb<br />";
                    
                } Else {

                    //Loop through each of the files
                    For($i=0; $i <= $allowattach-1; $i++) {
                        
                        If($_FILES['attachment']['name'][$i]) {
        
                            //Check if the file type uploaded is a valid file type. 
                            If(!in_array(get_ext($_FILES['attachment']['name'][$i]), $allowtypes)) {
                                
                                $error.= "Invalid file type for your file: ".$_FILES['attachment']['name'][$i]."<br />";
                                
                            //Check the size of each file
                            } Elseif(($_FILES['attachment']['size'][$i]) > ($max_file_size*1024)) {
                                
                                $error.= "Your file: ".$_FILES['attachment']['name'][$i]." is to big.<br />";
                                
                            } // If in_array
                            
                        } // If Files
                        
                    } // For
                    
                } // Else array_sum($_FILES['attachment']['size'])
                
            } // If Allowattach

        If($error) {
        
            $display_message=$error;

        } Else {
            
            If($use_subject_drop AND is_array($subjects) AND is_array($emails)) {
                $subject_count=count($subjects);
                $email_count=count($emails);
                
                If($subject_count==$email_count) {
                    
                    $myemail=$emails[$emailsubject];
                    $emailsubject=$subjects[$emailsubject];

                } // If $subject_count
                
            } // If $use_subject_drop

            $boundary=md5(uniqid(time()));
            
            //Headers
            $headers="Return-Path: <".clean_msg($youremail).">\n";
            $headers.="From: ".clean_msg($yourname)." <".clean_msg($youremail).">\n";
            $headers.="X-Mailer: PHP/".phpversion()."\n";
            $headers.="X-Sender: ".$_SERVER['REMOTE_ADDR']."\n";
            $headers.="X-Priority: ".$priority."\n"; 
            $headers.="MIME-Version: 1.0\n";
            $headers.="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
            $headers.="This is a multi-part message in MIME format.\n";

            //Message
            $message = "--".$boundary."\n";
            $message.="Content-Type: text/html; charset=\"iso-8859-1\"\n";
            $message.="Content-Transfer-Encoding: quoted-printable\n";
            $message.="\n";
            $message.=clean_msg(nl2br(strip_tags($yourmessage)));
            $message.="\n";

            //Add attachments to message
            If($allowattach > 0) {
                
                For($i=0; $i <= $allowattach-1; $i++) {
                    
                    If($_FILES['attachment']['tmp_name'][$i]) {
                        
                        $message.=phattach($_FILES['attachment']['tmp_name'][$i], $_FILES['attachment']['name'][$i], $boundary);
                        
                    } //If $_FILES['attachment']['name'][$i]
                    
                } //For
                
            } // If
            
            // End the message
            $message.="--".$boundary."--\n";
            
            // Send the completed message
            If(!mail($myemail, clean_msg($emailsubject), $message, $headers)) {
                
                Exit("An error has occured, please report this to the website administrator.\n");
                
            } Else {
            
                $sent_mail=true;
                
            }

        } // Else

    } // $_POST

    /*
    //================================================================================
    * Start the form layout
    //================================================================================
    :- Use the html below to customize the form.
    */
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Language" content="en-us" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title><?php echo $websitename?> - Powered By phMailer</title>

    <style type="text/css">
        body{
            background-color:#FFFFFF;
            font-family: Verdana, Arial, sans-serif;
            font-size: 12pt;
            color: #000000;
        }
        
        .error_message{
            font-family: Verdana, Arial, sans-serif;
            font-size: 11pt;
            color: #FF0000;
        }
        
        .thanks_message{
            font-family: Verdana, Arial, sans-serif;
            font-size: 11pt;
            color: #000000;
        }
        
        a:link{
            text-decoration:none;
            color: #000000;
        }
        a:visited{
            text-decoration:none;
            color: #000000;
        }
        a:hover{
            text-decoration:none;
            color: #000000;
        }
        
        .table {
            border-collapse:collapse;
            border:1px solid #000000;
            width:500px;
        }
        
        .table_header{
            border:1px solid #070707;
            background-color:#C03738;
            font-family: Verdana, Arial, sans-serif;
            font-size: 11pt;
            font-weight:bold;
            color: #FFFFFF;
            text-align:center;
            padding:2px;
        }
        
        .attach_info{
            border:1px solid #070707;
            background-color:#EBEBEB;
            font-family: Verdana, Arial, sans-serif;
            font-size: 8pt;
            color: #000000;
            padding:4px;
        }
        
        
        .table_body{
            border:1px solid #070707;
            background-color:#EBEBEB;
            font-family: Verdana, Arial, sans-serif;
            font-size: 10pt;
            color: #000000;
            padding:2px;
        }
        
        .table_footer{
            border:1px solid #070707;
            background-color:#C03738;
            text-align:center;
            padding:2px;
        }
        
        input,select,textarea {
            font-family: Verdana, Arial, sans-serif;
            font-size: 10pt;
            color: #000000;
            background-color:#AFAEAE;
            border:1px solid #000000;
        }
        
        .copyright {
            border:0px;
            font-family: Verdana, Arial, sans-serif;
            font-size: 9pt;
            color: #000000;
            text-align:right;
        }
        
        form{
            padding:0px;
            margin:0px;
        }
    </style>

    <script type="text/javascript">
    var error="";
    e_regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;

    function Checkit(theform) {
        if(theform.yourname.value=="") {
            error+="You did not enter your name\n";
        }
        
        if(theform.youremail.value=="") {
            error+="You did not enter your email\n";
        } else if(!e_regex.test(theform.youremail.value)) {
            error+="Invalid email address\n";
        }
            
        if(theform.yourmessage.value=="") {
            error+="You did not enter your message\n";
        }
        
        if(error) {
            alert('**The form returned the following errors:**\n\n' + error);
            error="";
            return false;
        } else {
            return true;
        }
    }
    </script>

    </head>
    <body>
    <?If($display_message) {?>

    <div align="center" class="error_message"><b><?=$display_message;?></b></div>
    <br />

    <?}?>

    <?If($sent_mail!=true) {?>

    <form method="post" action="<?=$_SERVER['PHP_SELF'];?>" enctype="multipart/form-data" name="phmailer" onsubmit="return Checkit(this);">
    <table align="center" class="table">
        <tr>
            <td colspan="2" class="table_header" width="100%"><?=$websitename;?></td>
        </tr>
        <?If($allowattach 0) {?>
            <tr>
                <td width="100%" class="attach_info" colspan="2">
                    <b>Valid Attachment Types:</b> <?=implode($allowtypes", ");?><br />
                    <b>Max size per file:</b> <?=$max_file_size?>kb.<br />
                    <b>Max combined file size:</b> <?=$max_file_total?>kb.
                </td>
            </tr>
        <?}?>
        
        <tr>
            <td width="30%" class="table_body">Your Name:</td>
            <td width="70%" class="table_body"><input name="yourname" type="text" size="30" value="<?=stripslashes(htmlspecialchars($yourname));?>" /><span class="error_message">*</span></td>
        </tr>
        <tr>
            <td width="30%" class="table_body">Your Email:</td>
            <td width="70%" class="table_body"><input name="youremail" type="text" size="30" value="<?=stripslashes(htmlspecialchars($youremail));?>" /><span class="error_message">*</span></td>
        </tr>
        <tr>
            <td width="30%" class="table_body">Subject:</td>
            <td width="70%" class="table_body">
            
                <?If($use_subject_drop AND is_array($subjects)) {?>
                        <select name="emailsubject" size="1">
                            <?while(list($key,$val)=each($subjects)) {?>

                                <option value="<?=intval($key);?>"><?=htmlspecialchars(stripslashes($val));?></option>
                            
                            <?}?>
                        </select>
                    
                
                <?} Else {?>
                    
                    <input name="emailsubject" type="text" size="30" value="<?=stripslashes(htmlspecialchars($emailsubject));?>" />
                    
                <?}?>
                
            </td>
        </tr>

        <?For($i=1;$i <= $allowattach$i++) {?>
            <tr>
                <td width="30%" class="table_body">Attach File:</td>
                <td width="70%" class="table_body"><input name="attachment[]" type="file" size="30" /></td>
            </tr>
        <?}?>
        
        <tr>
            <td colspan="2" width="100%" class="table_body">Your Message:<span class="error_message">*</span><br />
                <div align="center">
                    <textarea name="yourmessage" rows="8" cols="60"><?=stripslashes(htmlspecialchars($yourmessage));?></textarea>
                </div>
            </td>
        </tr>
        <tr>
            <td colspan="2" width="100%" class="table_footer">
                <input type="hidden" name="submit" value="true" />
                <input type="submit" value="<?=$submitvalue;?>" /> &nbsp;
                <input type="reset" value="<?=$resetvalue;?>" />
            </td>
        </tr>
    </table>
    </form>

    <?} Else {?>

        <div align="center" class="thanks_message"><?=$thanksmessage;?></div>
        <br />
        <br />

    <?}
    //Please leave this here.. It's very small and non-obtrusive. ?>
    <table class="table" style="border:0px;" align="center">
        <tr>
            <td><div class="copyright">&copy;<a href="http://www.phphq.net/?script=phMailer" target="_blank" title="Powered By phMailer 1.5.1 &lt;www.phphq.net&gt;">phMailer</a></div></td>
        </tr>
    </table>
    </body>
    </html>


  •  

    Tags for this Thread

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •