Jump to content

PHP Failing on certain size file upload


codeline

Recommended Posts

I've got a basic form for users on the site to fill out a form and upload a single image which is resized and saved to a directory on the server. I've tried the form numerous times and with images usually under 1MB the form successfully submits, data is queried and the image uploaded is resized and saved. However, recently I tried uploading larger sized images (1.2mb, 2.4mb, 3mb) and the script would seem to break. It wouldn't query any information, save any images, etc.

 

If you check my code attached, I have errors ready to output at all levels and not even any errors show up. When I hit submit after attempting to upload a larger file usually over 1MB, the page refreshes back to PHP_SELF as if it submitted but returns absolutely no message, alert or error and the form which was on the page is now gone.

 

I checked my PHP.ini file and my max file size upload is set at 32mb. Is there anything else with file size restrictions that I could be missing that is allowing this script to crash without even sending me any errors?

 

if(!empty($_POST['submitFeature']))
{
    // set variables
    $featurename = mysql_real_escape_string($_POST['featurename']);
    $featuredesc = mysql_real_escape_string($_POST['featuredesc']);
    $name = mysql_real_escape_string($_POST['name']);
    $email = mysql_real_escape_string($_POST['email']);
    $email2 = mysql_real_escape_string($_POST['email2']);
    $age = mysql_real_escape_string($_POST['age']);
    $city = mysql_real_escape_string($_POST['city']);
    $state = mysql_real_escape_string($_POST['state']);
    $src = $_FILES['featureupload']['tmp_name'];
    $featuresize = $_FILES['featureupload']['size'];
    $limitsize = 1000000;
        

    // 1 - A. REQUIRED FIELDS VERIFICATION
    if(!empty($featurename) && !empty($name) && !empty($email) && !empty($email2) &&  !empty($city) &&  !empty($state) && ($email == $email2) && !empty($_FILES['featureupload']['tmp_name']) && ($featuresize < $limitsize))
    {
        // 2 - A. SANITIZE AND VALIDATE EMAIL
        $email = filter_var($email, FILTER_SANITIZE_EMAIL);
        
        if(!filter_var($email, FILTER_VALIDATE_EMAIL))
        {
            print '
            <ul class="errorlist">
                <li class="alert">Error!</li>
                <li>Invalid Email Address</li>
            </ul>
            ';
        } else 
        {
            
            // 3 - A. VALIDATE IMAGE EXTENSION
            // verify that image uploaded is proper extension
            $fname = strtolower($_FILES['featureupload']['name']); // grab uploaded image's filename and lowercase the extension (ex: .JPG)
            if(preg_match('/[.](jpg)|(gif)|(png)$/', $fname))
            {
                // set image variables
                $path_image = 'submissions/';
                $final_width_of_image = 550;
                $randomappend=rand(0000,9999); // generate random number to append to filename
                $src = $_FILES['featureupload']['tmp_name']; // grab the src for where the image is temporarily held
                $filefull = $randomappend . $fname; // initiate new file name for submission's full image
                $target = $path_image . $filefull; // set variable for submission image's new location with appended name
                
                $path_image_thumb = 'submissions/thumbs/';
                $final_width_of_thumb = 166;
                $final_height_of_thumb = 120;
                $filethumb = $randomappend . $fname; // initiate new file name for submission's thumbnail
                $target_thumb = $path_image_thumb . $filethumb; // set variable for thumbnail's new location with appended name
                
                move_uploaded_file($src, $target);

                if(preg_match('/[.](jpg)$/', $filefull)){
                    $img = imagecreatefromjpeg($path_image . $filefull);
                } else if (preg_match('/[.](gif)$/', $filefull)){
                    $img = imagecreatefromgif($path_image . $filefull);
                } else if (preg_match('/[.](png)$/', $filefull)){
                    $img = imagecreatefrompng($path_image . $filefull);
                }

                // FULL SIZE IMAGE
                $ox = imagesx($img);
                $oy = imagesy($img);
                
                $imgx = $final_width_of_image;
                $imgy = floor($oy * ($final_width_of_image / $ox)); 
                
                $imgm = imagecreatetruecolor($imgx, $imgy); 
                 
                imagecopyresampled($imgm, $img, 0,0,0,0,$imgx,$imgy,$ox,$oy);

                if(!file_exists($path_image)){
                    if(!mkdir($path_image)){
                        die("There was a problem.");
                    } 
                }
                
                imagejpeg($imgm, $path_image . $filefull, 80);	
                // END FULL SIZE IMAGE
                
                // THUMBNAIL
                $tox = imagesx($img);
                $toy = imagesy($img);
                
                $tx = $final_width_of_thumb;
                $ty = $final_height_of_thumb; 
                
                $tm = imagecreatetruecolor($tx, $ty); 
                
                imagecopyresampled($tm, $img, 0,0,0,0,$tx,$ty,$tox,$toy); 
                
                if(!file_exists($path_image_thumb)){
                    if(!mkdir($path_image_thumb)){
                        die("There was a problem.");
                    } 
                }
                
                imagejpeg($tm, $path_image_thumb . $filethumb, 80);
                // END THUMBNAIL
                
                    
                // query the actual post forms
                $q = "INSERT INTO submissions (id, name, age, email, city, state, country, featurename, featuredesc, featureimg, featurethumb, postdate, approved) VALUES ('', '$name', '$age', '$email', '$city', '$state', '', '$featurename', '$featuredesc', '$target', '$target_thumb', NOW(), 'NO')";
                $r = mysql_query($q);
                
                if($r)
                {
                    echo '<script language="JavaScript">';
                    echo 'alert("Successfully added a submission.")';
                    echo '</script>'; 
                } else {
                    echo '<script language="JavaScript">';
                    echo 'alert("Submission was not added. Please try again.")';
                    echo '</script>'; 
                }
                
            } else {
                echo '<script language="JavaScript">';
                echo 'alert("Unacceptable image extension.")';
                echo '</script>'; 
            }
            // 3 - B. VALIDATE IMAGE EXTENSION
            
        }
        // 2 - B. END SANITIZE AND VALIDATE EMAIL
        
    // 1 - B. END REQUIRED FIELDS VERIFICATION
    } else {
        print '
        <ul class="errorlist">
            <li class="alert">Please fill out the required fields.</li>
        ';
    
        if (empty($name))
        {
            echo '	<li>* Full Name</li>' . "\n";
            $errorname = 'TRUE';	
        } if (empty($email))
        {
            echo '	<li>* Email</li>' . "\n";
            $erroremail = 'TRUE';
        } if (empty($email2))
        {
            echo '	<li>* Confirm Email</li>' . "\n";	
            $erroremail2 = 'TRUE';
        } if (empty($city))
        {
            echo '	<li>* City</li>' . "\n";	
            $errorcity = 'TRUE';
        } if (empty($state))
        {
            echo '	<li>* State</li>' . "\n";
            $errorstate = 'TRUE';
        } if ($email != $email2)
        {
            echo '	<li>* Emails do not match.</li>' . "\n";
        } if (empty($_FILES['featureupload']['tmp_name']))
        {
            echo '	<li>* You did not upload a feature.</li>' . "\n";
            $errorfile = 'TRUE';
        } if (empty($featurename))
        {
            echo '	<li>* Feature Name</li>' . "\n";	
            $errorfeature = 'TRUE';
        } if ($featuresize >= $limitsize)
        {
            echo '	<li>* File size is too large.</li>' . "\n";	
        }
        print '
        </ul>
        ';
    }
    // 1 - B. END REQUIRED FIELDS ERROR CODES
    
}

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.