Form upload file function - HELP!

I am not very php proficient! I have developed an email form for a client of mine and all works fine, I just need to add an “Upload your photo” function to it.

However I need the upload to be sent as an email attachment, how would I do this? This is my current form code:

<?php
                 $error    = ''; // error message
                 $name     = ''; // sender's name
                 $email    = ''; // sender's email address
                 $telnumber = ''; // telephone number

            if(isset($_POST['send']))
            {
                 $name = $_POST['name'];
                 $email    = $_POST['email'];
                 $telnumber = $_POST['telnumber'];

                if(trim($name) == '')
                {
                    $error = '<div class="errormsg">Please enter your name!</div>';
                }
                    else if(trim($email) == '')
                {
                    $error = '<div class="errormsg">Please enter your email address!</div>';
                }
                else if(!isEmail($email))
                {
                    $error = '<div class="errormsg">You have enter an invalid e-mail address. Please, try again!</div>';
                }
                if($error == '')
                {
                    if(get_magic_quotes_gpc())
                    {
                        $message = stripslashes($message);
                    }

                    // the email will be sent here
                    // make sure to change this to be your e-mail
                    $to      = "";

                    // the email subject
                    // '[Contact Form] :' will appear automatically in the subject.
                    // You can change it as you want

                    $subject = $subject;

                    // the mail message ( add any additional information if you want )
                    $msg     = "From : $name \\r\
 e-Mail : $email \\r\
 Telephone Number : $telnumber";

                    mail($to, $subject, $msg, "From: $email\\r\
Reply-To: $email\\r\
Return-Path: $email\\r\
");
            ?>

                  <!-- Message sent! (change the text below as you wish)-->
                  <div style="margin-top: 20px; margin-bottom:250px;">
                    <h1>Message Sent.</h1>
                       <p style="text-align:center;">Thank you <b><?=$name;?></b>, you have successfully entered the competition.</p>
                       <p style="text-align:center;">Please <a href="#">click here</a> to go back to the home page.</a></p>
                  </div>
                  <!--End Message Sent-->


            <?php
                }
            }

            if(!isset($_POST['send']) || $error != '')
            {
            ?>


            <!--Error Message-->
            <?=$error;?>

            <form  method="post" name="contFrm" id="contFrm" action="">

                      <label><p>Full Name <span style="font-size:8px; color:#73c8d9;">REQUIRED</span></p></label>
                        <input name="name" type="text" class="box" id="name" style="width:210px;" value="<?=$name;?>" /><br/>

                        <label><p>Email <span style="font-size:8px; color:#73c8d9;">REQUIRED</span></p></label>
                        <input name="email" type="text" class="box" id="email" style="width:210px;" value="<?=$email;?>" /><br/>

                        <label><p>Tel Number <span style="font-size:8px; color:#73c8d9;">REQUIRED</span></p></label>
                        <input name="telnumber" type="text" class="box" id="telnumber" style="width:210px;" value="<?=$telnumber;?>" /><br/>

                        <label><p>Upload Photo <span style="font-size:8px; color:#73c8d9;">REQUIRED</span></p></label>
                        <input type="file"  name="ufile" />

                        <!-- Submit Button-->
                        <input name="send" type="submit" class="button" id="send" value="Submit" />

            </form>

            <!-- E-mail verification. Do not edit -->
            <?php
            }

            function isEmail($email)
            {
                return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
                        ,$email));
            }
            ?>

I’m aware the form code isn’t 100% full proof but I need this to be running ASAP.

Many thanks for anyones help!

You’ll be better off using a library to handle this for you, try SwiftMailer. It has sufficient documentation to help you along. :slight_smile:

Hi,
Thanks but I only have a very basic understanding of PHP I wouldn’t be able to use swift-mailer (i’ve tried it).

I had this code as I use it for most contact forms, it works fine… I know it’s not very secure but it does the job.

I just need to add a section of php into there to be able to send the files now.

Unfortunately, that’s not the case.

Persevere with a, well documented, library and you’ll get there. If you don’t want to invest the time however, that’s a different issue. :wink:

I don’t mind investing the time, i’m just not very php proficient.

I don’t think I would have the expertise to use the swiftmailer library.

This is untested, but it should go something like this:-


<?php
require_once 'lib/swift_required.php';

//Create the Transport
$transport = Swift_MailTransport::newInstance();

//Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

//Pass it as a parameter when you create the message
$message = Swift_Message::newInstance('My amazing subject');

//Set To:
$message->setTo(array('receiver@domain.org'));

//Set From:
$message->setFrom(array('john@doe.com' => 'John Doe'));

// Set the body
$message->setBody('My <em>amazing</em> body', 'text/html');

//Create the attachment with your data
$attachment = Swift_Attachment::newInstance(file_get_contents($_FILES['uploadedfile']['tmp_name']), 'image.jpg', 'image/jpg');  

//Attach it to the message
$message->attach($attachment);

//Send message
$result = $mailer->send($message);

Check out the quick reference.

Would I keep my html the same?