Jump to content

$size = $_FILES['upload']['size']; ****fault in php?****


phillips321

Recommended Posts

Hi guys,

 

I've found a fault in my php script, when i try to upload a file sometimes if the file is too large it wont report the size of it. This simple code should just work, i'm unsure as to why it doesn't.

 

If i upload an small image (<1MB) everything works fine,but sometimes if i upload a larger image it doesn't report the size?

Any one here got any ideas??

 

Cheers

<html>
<head>
<title>ForumPix Uploader</title>
</head>
<body>
<center>
<form enctype="multipart/form-data" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="94096000"/>
Your file:<input name="upload" type="file">
<input type="submit" value="Upload!">
</form>
<?php
$size = $_FILES['upload']['size'];
$type = $_FILES['upload']['type'];
$name = $_FILES['upload']['tmp_name'];

echo '  size='.$size;
echo '  type='.$type;
echo '  name='.$name;
?>
</center>
</body>
</html>

 

Link to comment
https://forums.phpfreaks.com/topic/70470-size-_filesuploadsize-fault-in-php/
Share on other sites

<html>
<head>
<title>ForumPix Uploader</title>
</head>
<body>
<center>
<form enctype="multipart/form-data" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="94096000"/>
Your file:<input name="upload" type="file">
<input type="submit" value="Upload!">
</form>
<?php
$size = $_FILES['upload']['size'];
$type = $_FILES['upload']['type'];
$name = $_FILES['upload']['tmp_name'];
if (!$size > "94096000") {
echo '  size='.$size;
echo '  type='.$type;
echo '  name='.$name;
} else {
echo 'The file you uploaded was '. $size;
}
?>
</center>
</body>
</html>

nope thats not it either. I have literally looked into this code like a madman but something with php aint right.

 

Any chance someone could quickly use the php code on their server and test uploading a file to it? (try uploading a file greater than 2048KB - i would be very greatful if someone else could reproduce the error)

 

4 files + 1 directory needed:

index.php (the actual code)

overlay.png (the overlayed logo)

background.gif

upcount.txt (the upload text counter)

uploads/ (a directory to write the uploaded images to)

 

all files are packed in this zip here (11KB) http://phillips321.getmyip.com/dumping_ground/forumpix.zip

 

here's the code for reference:

<html>
<head>
<title>ForumPix Uploader</title>
<SCRIPT TYPE="text/javascript">
<!--
function popup(mylink, windowname)
{
if (! window.focus)return true;
var href;
if (typeof(mylink) == 'string')
   href=mylink;
else
   href=mylink.href;
window.open(href, windowname, 'width=400,height=300,scrollbars=no');
return false;
}
//-->
</SCRIPT>
</head>
<body background="background.gif" TEXT="#FFFFFF" LINK="FF6600" VLINK="FF6600"> <!--Changed theme to personalise-->
<center>
<PRE>
  __                                 _                                  _    
/ _|                               (_)                                | |   
| |_ ___  _ __ _   _ _ __ ___  _ __  ___  __       ___ ___        _   _| | __
|  _/ _ \| '__| | | | '_ ` _ \| '_ \| \ \/ /      / __/ _ \      | | | | |/ /
| || (_) | |  | |_| | | | | | | |_) | |>  <   _  | (_| (_) |  _  | |_| |   < 
|_| \___/|_|   \__,_|_| |_| |_| .__/|_/_/\_\ (_)  \___\___/  (_)  \__,_|_|\_\
                              | |                                            
                              |_|                                            
</PRE>
<form enctype="multipart/form-data" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="4096000"/>
Your file:<input name="upload" type="file">
<font size="1">
	<A HREF="TandCs.html" onClick="return popup(this, 'notes')">Accept T&Cs</A>
</font>
<input type="checkbox" name="tac" value="1" />
<input type="submit" value="Upload!">
</form>
<?php


$countpath = 'upcount.txt'; //sets location of counter file
$resize = '1000'; //sets max width or height of image
$url = 'http://forumpix.getymyip.com'; //url of site (dont not include trainling "/"
$overlay = 'overlay.png';
$quality = '60'; //user sets quality of jpg image

$fail = '0';
$img_resized = '0';

$size = $_FILES['upload']['size'];
$type = $_FILES['upload']['type'];
$name = $_FILES['upload']['tmp_name'];
if ($_POST['tac'] == 1){$tac = 1;} else {$tac = 0;}

if ($name != UPLOAD_ERR_OK){$fail = 'Error uploading file!';} //checks for upload error
if ($size == 0){$fail = 'Error: uploaded file is empty!';} //file size check
if ($size > '4096000') {$fail = 'File was too big - please upload one smaller than 1MB.';} //checks uploaded file size
if ($tac == 0){$fail = 'Please acccept the terms and conditions';}

if($fail == '0'){
//echo '<BR>FILE Type Check running';
if ($type == 'image/jpeg') {$img = imagecreatefromjpeg($name);}  //the follwoing segment of code checks the file type
elseif ($type == 'image/gif') {$img = imagecreatefromgif($name);}
elseif ($type == 'image/png') {$img = imagecreatefrompng($name);}
elseif ($type == 'image/bmp') {$img = imagecreatefromwbmp($name);}
else {$fail = 'incorrect file type, please upload either; JPG, BMP, GIF or PNG';}
}

//echo '<BR>size='.$size;
//echo '<BR>type='.$type;
//echo '<BR>name='.$name;
//echo '<BR>tac='.$tac;

if ($fail != '0'){}
else {
//echo '<BR>fail=PASS'; //TEMP marker to inform that fail=0

$iwidth = imagesx($img); //get image width
$iheight = imagesy($img); //get image height
//echo '<BR>Image dimentions:'.$iwidth.'x'.$iheight; //show dimentions before resize

//Shrink image size if larger than 1000x1000
if($iwidth>$resize || $iheight>$resize){
	$img_rezied = '1';
	$tmp_iwidth= $resize; //set width of new size
	$tmp_iheight = $iheight * ($tmp_iwidth/$iwidth); //create height based on width maintaining aspect ratio
	$tmp_resized = imagecreatetruecolor($tmp_iwidth, $tmp_iheight); //create new images with resized dimentions
	imagecopyresampled($tmp_resized, $img, 0, 0, 0, 0, $tmp_iwidth,$tmp_iheight, $iwidth, $iheight); //resample image to new size
	$img = $tmp_resized; //set resampled image back to $img
	$iwidth=$tmp_iwidth; //reset the width
	$iheight=$tmp_iheight; // reset the height
}


imagealphablending($img, true); //turn on transparency on image

$overlay = imagecreatefrompng($overlay); //create overlay image using user set file
$owidth = imagesx($overlay); //get width of overlay image
$oheight = imagesy($overlay); //get height of overlay image
imagecopy($img, $overlay, $iwidth - $owidth, $iheight - $oheight, 0, 0, $owidth, $oheight); //apply overlay to image
imagedestroy($overlay); //Get rid of temporary overlay file...

$countfile = fopen($countpath, r); //open counter file
$countnum = fread($countfile, filesize($countpath)); //get current counter integer
fclose($countfile); //close counter file
$newcountnum = $countnum + 1; //increment counter by one

$path = 'uploads/'.str_pad($newcountnum,8,0,'STR_PAD_LEFT').'.jpg'; //create a new filename
$webpath = $url.'/'.$path; //generate path to new photo

if(!imagejpeg($img, $path, $quality)) {
	$fail = 'Unable to write a new JPEG. Contact the administrator.';
	echo $fail;
}
else {
	$countfile = fopen($countpath, w);
	fwrite($countfile, $newcountnum);
	fclose($countfile);
	$success=1;
}
imagedestroy($img); //Get rid of our temporary file...
//echo '<BR>Fail Status at end of image processing='.$fail;
}

if (!$fail=='0') { //failure during script so output UPLOAD FAILED
echo '<font size="6">Upload Failed!</font>';
echo '<BR>'.$fail;
echo '<BR>Try giving it another go...';
}
else{
echo '<font size="6">Upload Sucess!</font>';
echo '<P>Your photo\'s has been uploaded to:<BR><A href='.$webpath.'>'.$webpath.'</A><br>you should see a preview of it below:</P>';
echo '<P><img src='.$webpath.' width=450></P>';
if ($img_resized = '1'){echo '<font size="1">Image resized to='.$iwidth.'x'.$iheight.'</font>';} //show new dimentions
echo '<P>Now feel free to upload another if you\'d like...</P>';
}

?>
</center>
</body>
</html>

BlueSkyIS, ur a legend! that was it, it was initially set as 2M, just changed that to 10M, pretty sure a user wont try to upload a 10MB image to my server.

 

Once again can i say thanks for figuring this out for me, i thought it was an issue with my php code rather than my ini file.

 

If your ever in southwest england i owe you a pint! ;D

 

 

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.