merylvingien Posted January 8, 2010 Share Posted January 8, 2010 Hi Fellas, having a bit of problem with a image upload script. When i test this, if i upload a jpg image everything is fine, but if i try a different file type then i get a mess of hell going on. Apache crashes but the file is still uploaded. I am assuming that i am missing a part out, but really need some help to complete this. The code i have is this (cut and pasted chunks from various locations and hashed together): <?php //This is the directory where images will be saved if ($_FILES['photo']['size'] > 0) { $fileName = ($_FILES['photo']['name']); $ext = substr(strrchr($fileName, "."), 1); $target = "uploads/"; $randName = md5(rand() * time()); $target = $target . $randName . '.' . $ext; } //Example #2 Resampling an image proportionally function ResizeJPEG($filename, $width, $height){ list($width_orig, $height_orig) = getimagesize($filename); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($filename); //JPEG imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); return imagejpeg($image_p, $filename, 100); //JPEG } //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) { //Tells you if its all ok echo "The file ". basename( $_FILES['photo']['name']). " has been uploaded, and your information has been added to the directory"; ResizeJPEG($target, 200, 200); } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> I either need to prevent users from uploading anything but a jpg, or allow them to upload any image type, i am not really fussed either way. Any help would be appreciated Quote Link to comment https://forums.phpfreaks.com/topic/187723-image-upload-headache/ Share on other sites More sharing options...
MadTechie Posted January 8, 2010 Share Posted January 8, 2010 Try this, it basically checks the file type and if its not jpeg it stops the script <?php //This is the directory where images will be saved if ($_FILES['photo']['size'] > 0){ $fileName = ($_FILES['photo']['name']); $ext = substr(strrchr($fileName, "."), 1); $target = "uploads/"; $randName = md5(rand() * time()); $target = $target . $randName . '.' . $ext; } //Added $allowedType = array("image/pjpeg","image/jpeg"); if(!in_array($_FILES["photo"]["type"],$allowedType)){ echo "Invalid file type"; exit; } //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)){ //Tells you if its all ok echo "The file ". basename( $_FILES['photo']['name']). " has been uploaded, and your information has been added to the directory"; ResizeJPEG($target, 200, 200); }else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } //Example #2 Resampling an image proportionally function ResizeJPEG($filename, $width, $height){ list($width_orig, $height_orig) = getimagesize($filename); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($filename); //JPEG imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); return imagejpeg($image_p, $filename, 100); //JPEG } ?> Quote Link to comment https://forums.phpfreaks.com/topic/187723-image-upload-headache/#findComment-991117 Share on other sites More sharing options...
merylvingien Posted January 8, 2010 Author Share Posted January 8, 2010 Thanks, that seems to have sorted it Quote Link to comment https://forums.phpfreaks.com/topic/187723-image-upload-headache/#findComment-991164 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.