// check whether file is uploaded if (!file_exists($_FILES['file']['tmp_name']) || !is_uploaded_file($_FILES['file']['tmp_name'])) { error('No file was uploaded.'); }
// check file size if ($_FILES['file']['size'] > 256000) { error('Uploaded file is too large.'); }
// check file type $finfo = finfo_open(FILEINFO_MIME_TYPE); $type = finfo_file($finfo, $_FILES['file']['tmp_name']); finfo_close($finfo); if (!in_array($type, ['image/png'])) { error('Uploaded file is not PNG format.'); }
// check file width/height $size = getimagesize($_FILES['file']['tmp_name']); if ($size[0] > 256 || $size[1] > 256) { error('Uploaded image is too large.'); } if ($size[2] !== IMAGETYPE_PNG) { // I hope this never happens... error('What happened...? OK, the flag for part 1 is: <code>' . getenv('FLAG1') . '</code>'); } // ok $filename = bin2hex(random_bytes(4)) . '.png'; move_uploaded_file($_FILES['file']['tmp_name'], UPLOAD_DIR . '/' . $filename); $session->set('avatar', $filename); flash('info', 'Your avatar has been successfully updated!'); redirect('/');