1.9.2.2 এবং 1.9.2.3 প্যাচ করার পরে আমার একই সমস্যা ছিল। SUPEE-9767 এতে একটি বর্ধিত বৈধতা পদ্ধতি যুক্ত করে
অ্যাপ্লিকেশন / কোড / কোর / পুরোনো যাদুকর / কোর / মডেল / ফাইল / ভ্যালিডেটার / Image.php
আমার ছিল:
public function validate($filePath)
{
$fileInfo = getimagesize($filePath);
if (is_array($fileInfo) and isset($fileInfo[2])) {
if ($this->isImageType($fileInfo[2])) {
return null;
}
}
throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));
}
এবং এতে পরিবর্তিত হয়েছে:
public function validate($filePath)
{
list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
if ($fileType) {
if ($this->isImageType($fileType)) {
//replace tmp image with re-sampled copy to exclude images with malicious data
$image = imagecreatefromstring(file_get_contents($filePath));
if ($image !== false) {
$img = imagecreatetruecolor($imageWidth, $imageHeight);
imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
switch ($fileType) {
case IMAGETYPE_GIF:
imagegif($img, $filePath);
break;
case IMAGETYPE_JPEG:
imagejpeg($img, $filePath, 100);
break;
case IMAGETYPE_PNG:
imagepng($img, $filePath);
break;
default:
return;
}
imagedestroy($img);
imagedestroy($image);
return null;
} else {
throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid image.'));
}
}
}
throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));
}
সমস্যাটি imagecopyresampled
প্রথমে স্বচ্ছতা নির্ধারণ না করে কল বলে মনে হচ্ছে কারণ এটি থেকে ডিফল্ট কালো পটভূমিটি মার্জ করে imagecreatetruecolor
।
আমি যা করেছি তা হ'ল পিএনজি ক্ষেত্রে ( imagecopyresampled
আগে imagecopysampled
আপনি এটি জিআইএফ-এর জন্যও ব্যবহার করতে পারেন) স্বচ্ছতার কলগুলি যুক্ত করে স্যুইচ স্টেটমেন্টে স্থানান্তরিত করেছিলেন ।
সুতরাং এখন আমার যদি / স্যুইচটি দেখতে লাগে:
if ($image !== false) {
$img = imagecreatetruecolor($imageWidth, $imageHeight);
switch ($fileType) {
case IMAGETYPE_GIF:
imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
imagegif($img, $filePath);
break;
case IMAGETYPE_JPEG:
imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
imagejpeg($img, $filePath, 100);
break;
case IMAGETYPE_PNG:
imagecolortransparent($img, imagecolorallocatealpha($img, 0, 0, 0, 127));
imagealphablending($img, false);
imagesavealpha($img, true);
imagecopyresampled($img, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);
imagepng($img, $filePath);
break;
default:
return;
}
imagedestroy($img);
imagedestroy($image);
return null;
}
পণ্য চিত্র আপলোডের সময় এটি আমার পিএনজি স্বচ্ছতা বজায় রেখেছিল। এটি যদি জলছবিতে সহায়তা করে এবং আপনি যদি নিজের ফোল্ডারটি স্থানীয় ফোল্ডারে ব্যবহার করেন তবে অবশ্যই তা জানেন না।
অ্যাপ্লিকেশন / কোড / স্থানীয় / পুরোনো যাদুকর / কোর / মডেল / ফাইল / ভ্যালিডেটার / Image.php