I Keep getting error confirming Post is empty - php

I have been going round in circles with this image upload where when I submit with file selected it uploads and posts directory as expected to database,
but of course if I submit without image selected then I get an error.
So I then would would do a check so see if file input is empty however it then stops the upload even when a file is selected and if I remove it I get this error
Warning: getimagesize(): Filename cannot be empty in ....
On searching this issue and see different peoples solutions, they suggest to increase the Upload max file etc... on the wamp php.ini which I did so, and restarted and still the same issue. However there is no issue with the file size as 5.83kb and php.ini is 25mb nor is there an issue with the file type because it does upload if I remove my error check.
Either way I have been scratching my head as I can not get to confirm when empty and echo out the error that I have set and then when file is selected to post. It just gives me the above error when checking.
Below is a working version which posts as expected but displays the error if empty. I don't want it to display this error, I want to display my own error.
Any suggestions? It's driving me up the wall :(
<?php
//UPLOAD IMAGE
if(isset($_POST["UploadImage"])) {
if(is_array($_FILES)) {
$file = $_FILES['file']['tmp_name'];
$sourceProperties = getimagesize($file);
$fileNewName = time();
$folderPath = "../userImages/";
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$imageType = $sourceProperties[2];
$resized = "_resized";
$line = "_";
$original = "_original";
switch ($imageType) {
case IMAGETYPE_PNG:
$imageResourceId = imagecreatefrompng($file);
$targetLayer = imageResize($imageResourceId,$sourceProperties[0],$sourceProperties[1]);
imagepng($targetLayer,$folderPath.$RegID.$line.$fileNewName.$resized. ".".$ext);
break;
case IMAGETYPE_GIF:
$imageResourceId = imagecreatefromgif($file);
$targetLayer = imageResize($imageResourceId,$sourceProperties[0],$sourceProperties[1]);
imagegif($targetLayer,$folderPath.$RegID.$line.$fileNewName.$resized. ".".$ext);
break;
case IMAGETYPE_JPEG:
$imageResourceId = imagecreatefromjpeg($file);
$targetLayer = imageResize($imageResourceId,$sourceProperties[0],$sourceProperties[1]);
imagejpeg($targetLayer,$folderPath.$RegID.$line.$fileNewName.$resized. ".".$ext);
break;
default:
$msg = "<div class=\"alert alert-danger\">Wrong File Format - Only JPG, PNG or GIF - Max 2 MB</div>";
exit;
break;
}
$file = #imagecreatefromjpeg($folderPath.$RegID.$line.$fileNewName.$resized. ".".$ext);
if (!$file)
{
$file= imagecreatefromstring(file_get_contents($folderPath.$RegID.$line.$fileNewName.$resized. ".".$ext));
}
echo "";
//If I want the Orignal image upload also then remove below comment
//move_uploaded_file($file, $folderPath.$RegID.$line.$fileNewName.$original. ".".$ext);
//POST TO DATABASE
$RegID;
$RegPhoto = $folderPath.$RegID.$line.$fileNewName.$resized. ".".$ext;
$sql = "UPDATE registered SET RegID = ?, RegPhoto = ? WHERE RegID = '$RegID'";
$stmt = $connect->prepare($sql);
$stmt->bind_param('is', $RegID, $RegPhoto );
$stmt->execute();
$msg = "<div class=\"alert alert-success\">Updated Profile Successfully</div>";
}
}
function imageResize($imageResourceId,$width,$height) {
$targetWidth =220;
$targetHeight =200;
$targetLayer=imagecreatetruecolor($targetWidth,$targetHeight);
imagecopyresampled($targetLayer,$imageResourceId,0,0,0,0,$targetWidth,$targetHeight, $width,$height);
return $targetLayer;
}
?>

Related

creating thumbnails on image upload - 'SOME' are black, yet others are ok

I have the following image upload script, that uploads an image, renames and resizes a thumbnail too. When uploading image (all JPG) some upload and display fine, yet others upload the main image fine but the thumbnail is just a black square.
Does anyone have any idea as to what the problem is?
[edit] I have added PNG to the filetypes, and it uploads correctly, however 'real' JPG files now upload the black thumbnail. I am thinking that I need to somehow check the file extension and apply imagecreatefromjpeg/imagecreatefrompng based on what is returned?
if this is the case, i am thinking an if/else statement where highlighted will do? - not sure what to check against to get the extension (jpg/png) though...
if(isset($_POST['submit'])){
// get file info
$file = $_FILES['file'];
$fileName = $_FILES['file']['name'];
$fileTmpName = $_FILES['file']['tmp_name'];
$fileSize = $_FILES['file']['size'];
$thumbName = $_FILES['file']['name']; //
$thumbTmpName = $_FILES['file']['tmp_name']; //
$thumbSize = $_FILES['file']['size']; //
$fileError = $_FILES['file']['error'];
$fileType = $_FILES['file']['type'];
//allow file types
$fileExt = explode('.', $fileName);
$fileActualExt = strtolower(end($fileExt));
$allowed = array('jpg', 'jpeg', 'png'); // ADDED PNG HERE
if(in_array($fileActualExt, $allowed)){
if($fileError === 0){
if($fileSize < 1000000){
$fileNameNew = $row['item_img'].".".$fileActualExt; //code!
$fileDestination = 'images/'.$col_id.'/'.$fileNameNew; //number
move_uploaded_file($fileTmpName, $fileDestination);
// if(???){ // START POSSIBLE IF/ELSE HERE?
// create thumbnail
$src = imagecreatefromjpeg($fileDestination);
list($width, $height) = getimagesize($fileDestination);
$thumbWidth = 100;
$thumbHeight = 100;
// } else { // POSSIBLE ELSE HERE?
// ADDED THIS FOR PNG
$src = imagecreatefrompng($fileDestination);
list($width, $height) = getimagesize($fileDestination);
$thumbWidth = 100;
$thumbHeight = 100;
// } // END POSSIBLE IF/ELSE HERE?
$tmp = imagecreatetruecolor($thumbWidth,$thumbHeight);
imagecopyresampled($tmp, $src, 0,0,0,0, $thumbWidth, $thumbHeight, $width, $height);
imagejpeg($tmp, 'images/'.$col_id.'/thumbs/'.$fileNameNew.'', 100);
imagedestroy($src);
imagedestroy($tmp);
//CHECK FOR IMAGE
$checkImgQuery = $db->prepare("SELECT item_image.item_image, item_item.item_id FROM item_image JOIN item_item ON item_item.item_img = item_image.item_image WHERE item_id = :item_id");
$checkImgQuery->execute(array(':item_id' => $item_id));
$check = $checkImgQuery->rowCount();
if($check > 0){
// UPDATE
} else {
// ADD
}
} else {
$error[] = 'your file is too big';
}
} else {
$error[] = 'there was an error uploading your file';
}
} else {
$error[] = 'you cannot upload files of this type';
}
}
Since it is not always happening, this is almost certain to come from the files, as they are the only thing that changes... I'm guessing your jpeg files are either corrupted (but not enough to not display the picture, but maybe make the PHP code crash) or they simply aren't real jpegs...
Here's what I'd recommend: There is no need to force the users on only one file type while PHP alone can handle multiple, so we can check the mime type and act accordingly.
switch(mime_content_type($fileDestination){
case 'image/jpeg':
$src = imagecreatefromjpeg($fileDestination);
break;
case 'image/png':
$src = imagecreatefrompng($fileDestination);
break;
case 'image/gif':
$src = imagecreatefromgif($fileDestination);
break;
default:
$error[] = 'your file is not of a recognized type';
}
if(isset($src)){
//do what you were doing.
}
So we test the mime type and use the corresponding function. Not that I did not include everything, but that should be a good start.
If you want an easier implementation, you could use this:
$src = imagecreatefromstring(file_get_content($fileDestination));
When creating an image from a string, the type is automatically detected. This would return false if the file is not recognized.
You will want to be careful with transparency when saving from PNG to JPG... But I'll leave that part to you.

How do i upload image from link to my server?

I have facebook login and signup on my site. I have looked here and there and i am trying to upload image from link.
suppose this is link of image as i wanted to upload image from facebook
http://graph.facebook.com/shaverm/picture?type=large
this will change into
http://m.ak.fbcdn.net/profile.ak/hprofile-ak-ash4/372183_100002526091955_998385602_n.jpg
Now i want it to upload on my site
this image:
http://m.ak.fbcdn.net/profile.ak/hprofile-ak-ash4/372183_100002526091955_998385602_n.jpg
I have found this code here on stackoverflow but i am not sure how this will work out i am trying this from last 2 hours and trying to figure it out but not able to do so i posted here.
$image = #ImageCreateFromString(#file_get_contents($imageURL));
if (is_resource($image) === true){
// image is valid, do your magic here
}else{
// not a valid image, show error
}
This are my code from which i upload picture right now on my site.
if ($_FILES) {
$name = $_FILES['filename']['name'];
$size = $_FILES["filename"]["size"];
switch ($_FILES['filename']['type']) {
case 'image/jpeg':
$ext = 'jpg';
break;
default:
$ext = '';
break;
}
if ($ext) {
if ($size > 800000) {
$imagefalse = '<span id="font">Image is bigger in size sorry!<br / ></span>';
} else {
$path = $imagelink; // old path of image
unlink($path); // remove old file if any
$timestamp = time();
$n = "image/user/$id.$timestamp.$ext";
move_uploaded_file($_FILES['filename']['tmp_name'], $n);
$setnewimage = mysql_query("UPDATE users SET image='$n' WHERE id='$id'");
}
} else
$imagefalse = '<span id="font">File is not an accepted image file<br / ></span>';
}
You probably need curl; it is a HTTP (& FTP) client library.

PHP Image upload fails FTP connection

I'm having some trouble debugging an old website. The original programmer is long out of touch, and I can't seem to find the error. The problem appears to be that when the user uploads an image, it never makes it to the ftp directory. The database values for description, file name, etc are made. Credentials are known good and tested.
I've done some looking and found a few scripts that do much the same thing; and it appears the PHP functions are all still valid (searched them at php.net). So I'm at a bit of a loss.
This script just stopped working two months ago. There was some DNS trouble with the server, but it was resolved and all seems well. Not sure if it's related.
If anyone can spot the problem I'd greatly appreciate it!
<?php
IF($ResizeAuth != "yes" OR $ItemID2Resize == "") //This page will exit right here unless the Resize Authorization is set to yes, and the New Image variable has some value
{
exit();
}
ini_set("memory_limit","24M"); //sets the total memory limit to 24 Megabytes just on this page for all of its scripts. The default is only 8M and fails with re-sizing large images.
$connection = mysql_connect("localhost","dbuser-correct","dbpw-correct");
$db = mysql_select_db("databasename-correct",$connection);
$conn_id = ftp_connect("www.correct-domain.com");
ftp_login($conn_id, "workingftpusername", "workingftppassword") or die("Could not connect");
FUNCTION uploadPic($src_img,$dDir,$maxWidth,$maxHeight,$resizeFlag,$tempName)
{
//destination
//(old) $dest = $dDir.$tempName;
//get source dimentions
$src_dims = getImageSize($src_img);
//create appropriate temp image
switch ($src_dims[2]) {
case 1: //GIF
break;
case 2: //JPEG
$srcImage = imageCreateFromJpeg($src_img);
break;
case 3: //PNG
break;
default:
return false;
break;
}
$srcRatio = $src_dims[0]/$src_dims[1]; // width/height ratio
$destRatio = $maxWidth/$maxHeight;
if ($destRatio > $srcRatio) {
$destSize[1] = $maxHeight;
$destSize[0] = $maxHeight*$srcRatio;
}
else {
$destSize[0] = $maxWidth;
$destSize[1] = $maxWidth/$srcRatio;
}
//if set image dimensions are required:
if ($resizeFlag == 1) {
$destSize[0] = $maxWidth;
$destSize[1] = $maxHeight;
}
$thumb_w = $destSize[0];
$thumb_h = $destSize[1];
$dst_img = imageCreateTrueColor($thumb_w,$thumb_h);
imageCopyResampled($dst_img,$srcImage,0,0,0,0,$thumb_w,$thumb_h,$src_dims[0],$src_dims[1]);
switch ($src_dims[2]) {
case 1:
break;
case 2:
#(original) imageJpeg($dst_img, $dest, 75); //75 denotes image quality / compression ratio
$resizedimage = imageJpeg($dst_img, NULL, 75); //75 denotes image quality / compression ratio
break;
case 3:
break;
}
//$y++;
unlink($src_img);
return $resizedimage;
}
######################
$maxImageWidth = 640; //pixels
$maxThumbWidth = 131; //pixels
$ImageName = $ItemID2Resize."_temp1.jpg";
$ThumbName = $ItemID2Resize."_temp2.jpg";
$NewImageName = "Item".$ItemID2Resize.".jpg";
$NewThumbName = "Item".$ItemID2Resize."_thumb.jpg";
$TempImageFile = uploadPic("temp_image_resize/$ImageName","",$maxImageWidth,0,0,"");
$TempImageFile = fopen($TempImageFile,"r");
#ftp_delete($conn_id, "httpdocs/images/Items/$NewImageName"); //deletes the previous jpg referencing the same item if it exsists.
ftp_fput($conn_id, "httpdocs/images/Items/$NewImageName", $TempImageFile, FTP_BINARY);
fclose($TempImageFile);
#ftp_delete($conn_id, "httpdocs/mckadmin/temp_image_resize/$NewImageName");
$TempThumbFile = tmpfile();
uploadPic("temp_image_resize/$ThumbName","",$maxThumbWidth,0,0,$TempThumbFile);
fseek($TempThumbFile,0);
#ftp_delete($conn_id, "httpdocs/images/Items/$NewThumbName"); //deletes the previous jpg referencing the same item if it exsists.
ftp_fput($conn_id, "httpdocs/images/Items/$NewThumbName", $TempThumbFile, FTP_BINARY);
fclose($TempThumbFile);
#ftp_delete($conn_id, "httpdocs/mckadmin/temp_image_resize/$NewThumbName");
######################
$ImagePath4SQL = "http://www.mycopperkettle.com/images/Items/$NewImageName";
$ThumbPath4SQL = "http://www.mycopperkettle.com/images/Items/$NewThumbName";
$CheckExsistingq = mysql_query("SELECT * FROM Product_ImagePaths WHERE ItemID=\"$ItemID2Resize\"");
$CheckExsisting = mysql_num_rows($CheckExsistingq);
IF($CheckExsisting == 0)
{
mysql_query("INSERT INTO Product_ImagePaths (ItemID,ImagePath,ThumbPath) VALUES (\"$ItemID2Resize\",\"$ImagePath4SQL\",\"$ThumbPath4SQL\")");
}
ELSE
{
mysql_query("UPDATE Product_ImagePaths SET ImagePath=\"$ImagePath4SQL\", ThumbPath=\"$ThumbPath4SQL\" WHERE ItemID=\"$ItemID2Resize\"");
}
ftp_close($conn_id); //close the FTP connection
?>
Thanks again!
~ Dr. Peril

php user image upload create specified folder unique image names

I'm (a newbie in php) still working on a time off project and another problem came up, for which I can't find a solution. Therefore I hope u guys can help me! Worked great the last time I posted something on here! I really appreciate your help...thx ahead!
My problem:
I want users to be able to upload pictures when they are logged in. They got several little buttons on their profile with images on them...and they should be able to change them...
I want to have it like this -> When a user uploads an image, the script shall create a new folder on the server. This shall happen in the "user_images" folder (that exists already). So a user with e.g. "id=55" creates a folder "55" in "user_images" when he uploads images. I tried and tried and tried and tried...with different syntax in line -> "$upload_dir =" but without any success :-/ I just don't get it to work...
Here is the part of the script:
<?php
include 'dbconfig.php';
page_protect();
$rs_settings = mysql_query("select * from user where id='$_SESSION[user_id]'");
while ($row_settings = mysql_fetch_array($rs_settings));
error_reporting (E_ALL ^ E_NOTICE);
session_start();
//only assign a new timestamp if the session variable is empty
if (!isset($_SESSION['user_id']) || strlen($_SESSION['user_id'])==0){
$_SESSION['user_id'] = mysql_query("select * from user where id='$_SESSION[user_id]'");
//assign the timestamp to the session variable
$_SESSION['user_file_ext']= "";
}
$upload_dir = "user_images/";
$upload_path = $upload_dir;
$large_image_prefix = "Large_";
$thumb_image_prefix = "button_";
$large_image_name = $large_image_prefix.$_SESSION['user_id'];
image (append the timestamp to the filename)
$thumb_image_name = $thumb_image_prefix.$_SESSION['user_id'];
image (append the timestamp to the filename)
$max_file = "1"; // Maximum file size in MB
$max_width = ""; // Max width allowed for the large image
$thumb_width = "87"; // Width of thumbnail image
$thumb_height = "35"; // Height of thumbnail image
// Only one of these image types should be allowed for upload
$allowed_image_types =
array('image/pjpeg'=>"jpg",'image/jpeg'=>"jpg",'image/jpg'=>"jpg",'image/png'=>"png",
'image/x-png'=>"png",'image/gif'=>"gif");
$allowed_image_ext = array_unique($allowed_image_types); // do not change this
$image_ext = ""; // initialise variable, do not change this.
foreach ($allowed_image_ext as $mime_type => $ext) {
$image_ext.= strtoupper($ext)." ";
}
function resizeImage($image,$width,$height,$scale) {
list($imagewidth, $imageheight, $imageType) = getimagesize($image);
$imageType = image_type_to_mime_type($imageType);
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
case "image/gif":
$source=imagecreatefromgif($image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source=imagecreatefromjpeg($image);
break;
case "image/png":
case "image/x-png":
$source=imagecreatefrompng($image);
break;
}
imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,
$width,$height);
switch($imageType) {
case "image/gif":
imagegif($newImage,$image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
imagejpeg($newImage,$image,90);
break;
case "image/png":
case "image/x-png":
imagepng($newImage,$image);
break;
}
chmod($image, 0777);
return $image;
}
function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width,
$start_height, $scale){
list($imagewidth, $imageheight, $imageType) = getimagesize($image);
$imageType = image_type_to_mime_type($imageType);
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
case "image/gif":
$source=imagecreatefromgif($image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source=imagecreatefromjpeg($image);
break;
case "image/png":
case "image/x-png":
$source=imagecreatefrompng($image);
break;
}
imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,
$newImageHeight,$width,$height);
switch($imageType) {
case "image/gif":
imagegif($newImage,$thumb_image_name);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
imagejpeg($newImage,$thumb_image_name,90);
break;
case "image/png":
case "image/x-png":
imagepng($newImage,$thumb_image_name);
break;
}
chmod($thumb_image_name, 0777);
return $thumb_image_name;
}
function getHeight($image) {
$size = getimagesize($image);
$height = $size[1];
return $height;
}
function getWidth($image) {
$size = getimagesize($image);
$width = $size[0];
return $width;
}
$large_image_location = $upload_path.$large_image_name.$_SESSION['user_file_ext'];
$thumb_image_location = $upload_path.$thumb_image_name.$_SESSION['user_file_ext'];
if(!is_dir($upload_dir)){
mkdir($upload_dir, 0777);
chmod($upload_dir, 0777);
}
if (file_exists($large_image_location)){
if(file_exists($thumb_image_location)){
$thumb_photo_exists = "<img
src=\"".$upload_path.$thumb_image_name.$_SESSION['user_file_ext']."\" alt=\"Thumbnail
Image\"/>";
}else{
$thumb_photo_exists = "";
}
$large_photo_exists = "<img
src=\"".$upload_path.$large_image_name.$_SESSION['user_file_ext']."\" alt=\"Large
Image\"/>";
} else {
$large_photo_exists = "";
$thumb_photo_exists = "";
}
if (isset($_POST["upload"])) {
//Get the file information
$userfile_name = $_FILES['image']['name'];
$userfile_tmp = $_FILES['image']['tmp_name'];
$userfile_size = $_FILES['image']['size'];
$userfile_type = $_FILES['image']['type'];
$filename = basename($_FILES['image']['name']);
$file_ext = strtolower(substr($filename, strrpos($filename, '.') + 1));
//Only process if the file is a JPG, PNG or GIF and below the allowed limit
if((!empty($_FILES["image"])) && ($_FILES['image']['error'] == 0)) {
foreach ($allowed_image_types as $mime_type => $ext) {
//loop through the specified image types and if they match the
extension then break out
//everything is ok so go and check file size
if($file_ext==$ext && $userfile_type==$mime_type){
$error = "";
break;
}else{
$error = "Only <strong>".$image_ext."</strong> images accepted for upload<br />";
}
}
//check if the file size is above the allowed limit
if ($userfile_size > ($max_file*1048576)) {
$error.= "Images must be under ".$max_file."MB in size";
}
}else{
$error= "Select an image for upload";
}
//Everything is ok, so we can upload the image.
if (strlen($error)==0){
if (isset($_FILES['image']['name'])){
//this file could now has an unknown file extension (we hope it's one of the ones set above!)
$large_image_location = $large_image_location.".".$file_ext;
$thumb_image_location = $thumb_image_location.".".$file_ext;
//put the file ext in the session so we know what file to look for once its uploaded
$_SESSION['user_file_ext']=".".$file_ext;
move_uploaded_file($userfile_tmp, $large_image_location);
chmod($large_image_location, 0777);
$width = getWidth($large_image_location);
$height = getHeight($large_image_location);
//Scale the image if it is greater than the width set above
if ($width > $max_width){
$scale = $max_width/$width;
$uploaded = resizeImage($large_image_location,$width,$height,$scale);
}else{
$scale = 1;
$uploaded = resizeImage($large_image_location,$width,$height,$scale);
}
//Delete the thumbnail file so the user can create a new one
if (file_exists($thumb_image_location)) {
unlink($thumb_image_location);
}
}
//Refresh the page to show the new uploaded image
header("location:".$_SERVER["PHP_SELF"]);
exit();
}
?>
It would be really cool if someone could help me to fix these problems...you may know how hard it is, when you're just a rookie! If there's more weird syntax in there...let me know, I'm just a beginner (like we all have been at the beginning) and trying to get better :)
Thank you guys!
Keeping in mind that allowing any user to upload content to your server creates a security hole that requires special attention, this is a bit of code I've used in the past for an internal-use application:
$folderPath = "/uploads/" . $folderName;
$exist = is_dir($folderPath);
if(!$exist) {
mkdir("$folderPath");
chmod("$folderPath", 0755);
}
else { echo "Folder already exists"; }
You can also chmod right from mkdir but was having issues with doing that on this particular server config.
http://php.net/manual/en/function.mkdir.php
UPDATED with more complete example:
// Define path where file will be uploaded to
// User ID is set as directory name
$folderPath = "/uploads/$userID";
// Check to see if directory already exists
$exist = is_dir($folderPath);
// If directory doesn't exist, create directory
if(!$exist) {
mkdir("$folderPath");
chmod("$folderPath", 0755);
}
else { echo "Folder already exists"; }
// PROCESS FILE UPLOAD
// Set initial/temporary upload location
// temp_uploads must have proper read/write permissions (755 or 777)
$target_path = "/uploads/temp_uploads/";
// Append the name of the uploaded file to the temp directory
$target_path .= basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
$filename = basename( $_FILES['uploadedfile']['name']);
// Location where temporary file is being stored
$temp_location = '/uploads/temp_uploads/' . basename( $_FILES['uploadedfile']['name']);
// Final destination where file will be located
$destination = "/uploads/$folderPath/$filename";
rename($temp_location, $destination);
}
You are assigning a mysql query resource to the $_SESSION["user_id"]
$_SESSION['user_id'] = mysql_query("select * from user where id='$_SESSION[user_id]'");
I think you want to get the user id out of that query
Also if your code produces any errors it would be great if you included them in your question
ps. don't use mysql_* functions, they are deprecated and create unwanted security holes if not used properly, learn dibi, pdo, or any other newer database layer
$file_name=basename($_FILES['uploadedfile']['name']);
mkdir("upload/".$username,0777);
$target_path = "upload/$username/". $file_name;

Why will my upload form not upload files over 2.1mb using php?

I am using an upload script that is working great:
ini_set('memory_limit', '256M');
function uploadImage($files_name, $files_tmp_name, $files_error, $files_type, $uploaded_photos_array, $image_type, $replace_position='69') { //Checks if the file uploaded correctly, saves the folder name to the DB, and calls the resizeAndPlaceFile 3 times
global $address;
//If the directory doesn't exist, create it
if (!is_dir('../images/uploads/temp/'.$address)) {
mkdir('../images/uploads/temp/'.$address);
}
$myFile_original = $files_name; //Store the filename into a variable
//Change the filename so it is unique and doesn't contain any spaces and is all lowercase
$myFile = str_replace(' ', '_', $myFile_original); //change all spaces to underscores within a file name
$myFile = strtolower($myFile); //Make all characters lowercase
//$anyNum = rand(20,500789000); //Generate a random number between 20 and 500789000
//$newFileName = $anyNum.'_'.$myFile; //Combine the random number with the filename to create a unique filename
$newFileName = $myFile;
$info = pathinfo($newFileName); //Finds the extension of the filename
$directory_name = basename($newFileName,'.'.$info['extension']); //Removes the extension from the filename to use as the name of the directory
$folder = '../images/uploads/temp/'.$address.'/'.$directory_name.'/'; //Folder to upload to
//If the directory doesn't exist, create it
if (!is_dir($folder)) {
mkdir($folder);
}
//===Check if the File already exists========
if (file_exists($folder.'large.jpg')) {
echo $myFile_original." already exists.";
} //******If file already exists in your Folder, It will return zero and Will not take any action===
else { //======Otherwise File will be stored in your given directory and Will store its name in Database===
//copy($_FILES['fileField']['tmp_name'],$folder.$newFileName); //===Copy File Into your given Directory,copy(Source,Destination)
// Check if file was uploaded ok
if(!is_uploaded_file($files_tmp_name) || $files_error !== UPLOAD_ERR_OK) {
exit('There was a problem uploading the file. Please try again.');
} else {
/*
$sql = 'INSERT into tblfileupload SET
file_name = "'.$folder.'"';
$result = $conn->query($sql) or die($conn->error);
if($result > 0) { //====$res will be greater than 0 only when File is uploaded Successfully====:)
echo 'You have Successfully Uploaded File';
}
*/
if(!function_exists('resizeAndPlaceFile')){
function resizeAndPlaceFile($image_size, $files_tmp_name, $files_type, $folder) { //Resizes the uploaded file into different sizes
//echo '<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />The resizeAndPlaceFile function is being called!';
// Create image from file
switch(strtolower($files_type)) {
case 'image/jpeg':
$image = imagecreatefromjpeg($files_tmp_name);
break;
case 'image/png':
$image = imagecreatefrompng($files_tmp_name);
break;
case 'image/gif':
$image = imagecreatefromgif($files_tmp_name);
break;
default:
exit('Unsupported type: '.$files_type);
}
// Get current dimensions
$old_width = imagesx($image);
$old_height = imagesy($image);
// Target dimensions for large version
switch($image_size) {
case 'large':
$max_width = '600'; //Large Photo (Listing Page)
break;
case 'medium':
$max_width = '157'; //Medium Photo (Dashboard)
break;
case 'thumbnail':
$max_width = '79'; //Small Photo (Listing Page - Thumbnail)
break;
}
if($max_width > $old_width) {
$max_width = $old_width;
}
$max_height = ($old_height/$old_width)* $max_width;
// Get current dimensions
$old_width = imagesx($image);
$old_height = imagesy($image);
// Calculate the scaling we need to do to fit the image inside our frame
$scale = min($max_width/$old_width, $max_height/$old_height);
// Get the new dimensions
$new_width = ceil($scale*$old_width);
$new_height = ceil($scale*$old_height);
// Create new empty image
$new = imagecreatetruecolor($new_width, $new_height);
// Resize old image into new
imagecopyresampled($new, $image, 0, 0, 0, 0, $new_width, $new_height, $old_width, $old_height);
//Output the image to a file
imagejpeg($new, $folder.$image_size.'.jpg',100);
// Destroy resources
imagedestroy($image);
imagedestroy($new);
} //end function resizeAndPlaceFile
} //end if !function_exists['resizeAndPlaceFile']
resizeAndPlaceFile('large',$files_tmp_name, $files_type, $folder); //Large Photo (List Page)
resizeAndPlaceFile('medium',$files_tmp_name, $files_type, $folder); //Medium Photo (Dashboard)
resizeAndPlaceFile('thumbnail',$files_tmp_name, $files_type, $folder); //Small Photo (List Page - Thumbnail)
if($image_type == 'replace') { //If this is being run for a replace, then replace one of the values instead of adding it to the end of the array
$uploaded_photos_array[$replace_position] = $folder; //This replaces the value of the old image with the new image
} else if($image_type == 'initial') { //otherwise, add it to the end of the array
array_push($uploaded_photos_array,$folder);
}
return $uploaded_photos_array;
} //end else
} //end else
} //end function uploadImage
When I try to upload any file above 2.1mb, it won't upload the file and won't display any error so I have no idea why it is not working. Why will my upload form not upload files over 2.1mb using php?
Check and change the following php.ini instructions:
memory_limit = 32M
upload_max_filesize = 10M
post_max_size = 20M
update these parameters in your php.ini
upload_max_filesize
post_max_size
You can't change maximum file upload size from your php script. You should change in php.ini file as
upload_max_filesize = 30M
post_max_size = 30M
Some hosters dosen't allow to change php.ini(in case of shared hosting) in that u should use .htaccess and use following
php_value upload_max_filesize 30M

Categories