Hello,
I am new to Daniweb and am I glad I found it, there is so much helpful information here for a newbie programer.
This is my error message:
Parse error: parse error, unexpected T_STRING, expecting T_CASE or T_DEFAULT or '}' in C:\wamp\www\helen\upload.php on line 17
This is my story:
I am building a database for a realestate agent and it needs to be able to upload images to the database. Being green at this I have had a heck of a time finding tutorials that make sense to me regarding uploading files to the database so this is what I have done, please tell me if there is a better way. I am using PHP and I have an 'add.php' page where you would fill in your information and there is a browse button to browse to your image file,
here is the code for the button,

<td><input type="hidden" name="MAX_FILE_SIZE" value="100000" size="32" />
       <input name="userfile" type="file" /></td>

I have another page called 'upload.php' that apparently is the page that processes the file information and places it in the database? (I think this is right?)
Here is the code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>uploading</title>
</head>
<body>
<h1>Uploading file</h1>
<?php


if ($_FILES['userfile']['error'] > 0)
{
  echo 'Problem: ';
  switch ($_FILES['userfile']['error'])
  {
   case1: echo 'File exceeded upload_max_filesize'; break;  ->THIS IS LINE 17<-
   case2: echo 'File exceeded max_filesize'; break;
   case3: echo 'File only partially uploaded'; break;
   case4: echo 'No file uploaded'; break;
  }
 exit;
}

if ($_FILES['userfile']['type'] != 'image/gif''image/jpg')
{
	echo 'Problem:image must be .gif or .jpg';
		exit;
}

$upfile= '/uploads/'.$_FILES['userfile']['name'];

if (is_uploaded_file($_FILES['userfile']['tmp_name']))
	if (!move_uploaded_file($_FILES['userfile']['tmp_name'], $upfile))
		{
			echo 'Problem: Could not move file to destination directory';
			exit;
		}
	}
	else
	{
		echo 'Problem: Possible file upload attack. Filename: ';
		echo $_FILES['userfile']['name'];
		exit;
	}
	
	echo 'File uploaded successfully<br><br>';
	
	$fp = fopen($upfile, 'r');
	$contents = fread ($fp, filesize ($upfile));
	fclose ($fp);
	
	$contents = strip_tags($contents);
	$fp = fopen($upfile, 'w');
	fwrite($fp, $contents);
	fclose($fp);
	
	echo 'Preview of uploaded images:<br><br>';
	echo $contents;
	echo '<br><br>';
	?>



</body>
</html>

I have been reading posts from others that have been having similar problems and it seems that it is usually a spelling error or a semicolon is missing but I can't seem to find the error.
And I am wondering if this is even the right way about uploading images.

Incase it is important the information in the data base for the image field is:
Field:thumb1
Type:mediumblob
Attributes:binary
Null:no


Thanks for your help, I feel like this php sql stuff will never make sense.

Cheers!

Dani AI

Generated

Three separate issues are visible in the thread: the switch syntax, the MIME/type test, and the destination path/permission + inappropriate text handling for a binary image. and were right to point at the switch syntax; 's idea of checking the type is useful in principle, but use a robust approach rather than string-matching alone. A checklist plus small, safe examples follows.

Use the PHP upload error constants instead of literal numbers (clearer and avoids parse surprises):

switch ($_FILES['userfile']['error']) {
  case UPLOAD_ERR_INI_SIZE:
    echo 'File exceeded upload_max_filesize';
    break;
  case UPLOAD_ERR_FORM_SIZE:
    echo 'File exceeded MAX_FILE_SIZE';
    break;
  case UPLOAD_ERR_PARTIAL:
    echo 'File only partially uploaded';
    break;
  case UPLOAD_ERR_NO_FILE:
    echo 'No file uploaded';
    break;
}

Validate the actual image type (client MIME can be forged). Prefer exif_imagetype() or getimagesize()/finfo_file():

$imgType = @exif_imagetype($_FILES['userfile']['tmp_name']);
if (!in_array($imgType, [IMAGETYPE_GIF, IMAGETYPE_JPEG])) {
  exit('Problem: only GIF or JPEG allowed');
}

Fix the move/target path and binary handling: do not use a leading slash unless you mean an absolute root path. Build a safe server path, ensure the directory exists and is writable, use basename() and a unique name, and do not call strip_tags() on image binaries:

$dir = __DIR__ . '/uploads/';
if (!is_dir($dir)) mkdir($dir, 0755, true);
$target = $dir . uniqid('img_', true) . '-' . basename($_FILES['userfile']['name']);
move_uploaded_file($_FILES['userfile']['tmp_name'], $target);

Additional notes: ensure your HTML form uses method="post" and enctype="multipart/form-data", prefer storing files on disk and the path in the DB unless you need BLOBs (if you do store blobs, read files in binary and bind as LOB with PDO or mysqli), sanitize filenames, limit file size, and always verify the real image type before saving. This will resolve the parse errors and the move warnings while keeping uploads safer.

Recommended Answers

All 6 Replies

try the case statements like this:

case'1': echo 'File exceeded upload_max_filesize'; 
break; 
case'2': echo 'File exceeded max_filesize'; 
break;
case'3': echo 'File only partially uploaded'; 
break;
case'4': echo 'No file uploaded';
 break;

There should be a space between case and 1 and add a newline after the semi-colon
as suggested by JeniF

.i.e

case 1: 
	echo 'File exceeded upload_max_filesize'; 
	break;

Also check the type returned by $_FILES
and use 1 or '1' accordingly.

HI thanks,
but that didn't work, I tried it both ways and now my error is:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\wamp\www\helen\upload.php on line 29

Line 29 is:

if ($_FILES['userfile']['type'] != 'image/gif''image/jpg')

Is this in your opinions the way to upload image files using a browse button?

I appreciate your time so far, please don't leave me yet!!!

Thanks

Your switch problem is fixed.
You just have a bug online 29
trie

if(strpos('*image/gif image/jpg', $Files[' file1']['type']))  {

Thanks but it hasn't worked so far,
Here are the new error messages:

Uploading file

Warning: move_uploaded_file(/uploads/Lake View.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\wamp\www\helen\upload.php on line 39

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'c:/wamp/tmp\php24A.tmp' to '/uploads/Lake View.jpg' in C:\wamp\www\helen\upload.php on line 39
Problem: Could not move file to destination directory

At least I am getting the uploading file message?

Any further help is still greatly appreciated.

Check the directory permissions in the folder uploads where the file is to be uploaded?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.