RSS Forums RSS

Php file upload

Reply
Posts: 109
Reputation: rajeesh_rsn is an unknown quantity at this point 
Solved Threads: 0
rajeesh_rsn rajeesh_rsn is offline Offline
Junior Poster

Php file upload

  #1  
Jan 8th, 2009
Hi I am new to php,
I had a form in my page to upload image and some data. And that image filed is not mandatory. I had done that script well and working well. But the problem is it always need a image ( that is not mandatory in my case ). The following is the code with me.. Kindly let me know which change i need to do for making that file field is not mandatory ...

$string = md5(microtime() * mktime());
$new = substr($type,0,1);
$ido = substr($string,0,6);
$id= $new.$ido;


$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);

// make a note of the directory that will recieve the uploaded files
$uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . "shopping/";

// make a note of the location of the upload form in case we need it
$uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'shopping.php';

// make a note of the location of the success page
$uploadSuccess ='shopping.php';

// name of the fieldname used for the file in the HTML form
$fieldname = 'file';


$errors = array(1 => 'php.ini max file size exceeded',
                2 => 'html form max file size exceeded',
                3 => 'file upload was only partial',
                4 => 'no file was attached');

// check the upload form was actually submitted else print form
isset($_POST['Submit'])
	or error('the upload form is neaded', $uploadForm);

// check for standard uploading errors
($_FILES[$fieldname]['error'] == 0)
	or error($errors[$_FILES[$fieldname]['error']], $uploadForm);
	
// check that the file we are working on really was an HTTP upload
@is_uploaded_file($_FILES[$fieldname]['tmp_name'])
	or error('not an HTTP upload', $uploadForm);
	
// validation... since this is an image upload script we 
// should run a check to make sure the upload is an image
@getimagesize($_FILES[$fieldname]['tmp_name'])
	or error('only image uploads are allowed', $uploadForm);
	
// make a unique filename for the uploaded file and check it is 
// not taken... if it is keep trying until we find a vacant one
$md5 = md5(microtime() * mktime());


$string = substr($md5,0,5);

while(file_exists($uploadFilename = $uploadsDirectory.$string.'-'.$_FILES[$fieldname]['name']))
{
	$string++;
}
$name = $string.'-'.$_FILES[$fieldname]['name'];


// now let's move the file to its final and allocate it with the new filename
@move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename)
	or error('receiving directory insuffiecient permission', $uploadForm);
	
rename("shopping/" . $name, "shopping/" .$type."-".$name);


function error($error, $location, $seconds = 5)
{
header("Refresh: $seconds; URL=\"$location\"");
	echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'."\n".
	'"http://www.w3.org/TR/html4/strict.dtd">'."\n\n".
	'<html lang="en">'."\n".
	'	<head>'."\n".
	'		<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'."\n\n".
	'		<link rel="stylesheet" type="text/css" href="stylesheet.css">'."\n\n".
	'	<title>Upload error</title>'."\n\n".
	'	</head>'."\n\n".
	'	<body>'."\n\n".
	'	<div id="Upload">'."\n\n".
	'		<h1>Upload failure</h1>'."\n\n".
	'		<p>An error has occured: '."\n\n".
	'		<span class="red">' . $error . '...</span>'."\n\n".
	'	 	The upload form is reloading</p>'."\n\n".
	'	 </div>'."\n\n".
	'</html>';
	exit;
}

Thanks in Advance
Last edited by rajeesh_rsn : Jan 8th, 2009 at 12:39 pm. Reason: mistake
AddThis Social Bookmark Button
Reply With Quote  
Posts: 109
Reputation: rajeesh_rsn is an unknown quantity at this point 
Solved Threads: 0
rajeesh_rsn rajeesh_rsn is offline Offline
Junior Poster

Re: Php file upload

  #2  
Jan 9th, 2009
Please help me....
Reply With Quote  
Posts: 3
Reputation: wilch is an unknown quantity at this point 
Solved Threads: 1
wilch wilch is offline Offline
Newbie Poster

Re: Php file upload

  #3  
Jan 9th, 2009
What i would first attempt to do is to check whether the field 'file' has anything after being posted, if it is set to something (hopefully a filename) then we can proceed to call the other image processing stuff.
Otherwise we omit the image processing code.

i.e.


  1. //put the isset(...) stuff here
  2.  
  3. if ($_FILES['file']['name'] != '') { //can check for other things
  4.  
  5. // check for standard uploading errors
  6. ($_FILES[$fieldname]['error'] == 0)
  7. or error($errors[$_FILES[$fieldname]['error']], $uploadForm);
  8.  
  9. // check that the file we are working on really was an HTTP upload
  10. @is_uploaded_file($_FILES[$fieldname]['tmp_name'])
  11. or error('not an HTTP upload', $uploadForm);
  12.  
  13. // validation... since this is an image upload script we
  14. // should run a check to make sure the upload is an image
  15. @getimagesize($_FILES[$fieldname]['tmp_name'])
  16. or error('only image uploads are allowed', $uploadForm);
  17.  
  18. // make a unique filename for the uploaded file and check it is
  19. // not taken... if it is keep trying until we find a vacant one
  20. $md5 = md5(microtime() * mktime());
  21.  
  22.  
  23. $string = substr($md5,0,5);
  24.  
  25. while(file_exists($uploadFilename = $uploadsDirectory.$string.'-'.$_FILES[$fieldname]['name']))
  26. {
  27. $string++;
  28. }
  29. $name = $string.'-'.$_FILES[$fieldname]['name'];
  30.  
  31.  
  32. // now let's move the file to its final and allocate it with the new filename
  33. @move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename)
  34. or error('receiving directory insuffiecient permission', $uploadForm);
  35.  
  36. rename("shopping/" . $name, "shopping/" .$type."-".$name);
  37.  
  38. }
  39. //put that function error function here
  40. //----------------
I have put the code which i think affects the image into the if clause. All code before and after should remain as before.
Last edited by peter_budo : Jan 11th, 2009 at 1:22 pm. Reason: Keep It Organized - For easy readability, always wrap programming code within posts in [code] (code blocks) and [icode] (inline code) tags.
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.



Similar Threads
Other Threads in the PHP Forum
Views: 744 | Replies: 2 | Currently Viewing: 1 (0 members and 1 guests)

 

Thread Tools Display Modes
Forums | Blogs | Tutorials | Code Snippets | Whitepapers | RSS Feeds | Advertising
All times are GMT -4. The time now is 3:03 pm.
Newsletter Archive - Sitemap - Privacy Statement - Acceptable Use Policy - Contact Us
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC