Если вы используете функцию imagecreatefromstring () , вам не нужно проверять тип MIME.
Фактически imagecreatefromstring()
вернет false, если не может создать ресурс, то есть строка не является допустимым изображением.
Таким образом, вы можете использовать его как дополнительный и более надежный тест, чтобы убедиться, что у вас есть действительное изображение.
Я просмотрел ваш код, изменил некоторые вещи и прокомментировал по пути.
if(isset($_POST['upload'])){
//Getting file name
$filename = $_FILES['imagefile']['name'];
//Valid extension
$valid_ext = array('png','jpeg','jpg');
//Location
$path = 'images/'; //<--Just the path to the directory.
$imageName = 'myNewImageName.jpg'; //<---Rename your image.
//File extension
$file_extension = strtolower(pathinfo($location, PATHINFO_EXTENSION));
//Check extension
if(in_array($file_extension, $valid_ext)){
//Compress Image
compressImage($filename, $path, $imageName, 60);
}else{
echo "Invalid file type.";
}
}
//Compress image
function compressImage($file, $path, $imageName, $quality) {
//Check to see if the directory exist. If not create it with write permissions.
if(!file_exists($path)){
mkdir($path, 0777);
}
//Check to see if the directory is writable. If not change permissions.
if(!is_writable($path)){
chmod($path, 0777);
}
$resource = imagecreatefromstring(file_get_contents($file)); //Creates an image resource and it does not matter what MIME type.
imagejpeg($resource, $path . $imageName, $quality); //Will save image to new path and filename.
imagedestroy($resource); //<--Don't forget to free your resources.
//Change your permissions back to what they need to be.
chmod($path, 0755);
chmod($destination, 0644);
}