Topsy Turvey Posted June 11, 2007 Share Posted June 11, 2007 Hi everybody! I have been playing with the below script for validating and uploading images for a gallery. The problem is, the control structure only registers errors (ie. $errors=1) but this does not terminate the script if the error is true. I tried using 'exit;' within the if statements but this meant the script REALLY terminated and I lost the rendering of the rest of the page (with footer include etc.) Could this be a case for using the 'switch' and, if so, could anyone show me how? If not, is there are neat way to get around the 'exit;' line destroying the rest of the page? Here's the code: <?php //define a maxim size for the uploaded images in Kb define ("MAX_SIZE","200"); //This function reads the extension of the file. It is used to determine if the file is an image by checking the extension. function getExtension($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; } //This variable is used as a flag. The value is initialized with 0 (meaning no error found) //and it will be changed to 1 if an error occurs. //If the error occures the file will not be uploaded. $errors=0; //checks if the form has been submitted if(isset($_POST['submit'])) { //reads the name of the file the user submitted for uploading $image=$_FILES['image']['name']; //if it is not empty if ($image) { //get the original name of the file from the clients machine $filename = stripslashes($_FILES['image']['name']); //get the extension of the file in a lower case format $extension = getExtension($filename); $extension = strtolower($extension); //if it is not a known extension, we will suppose it is an error and will not upload the file, //otherwise we will do more tests if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "gif")) { //print error message echo '<p class="error">Unknown extension! Please use a jpg or gif file.</p>'; $errors=1; } else { //get the size of the image in bytes //$_FILES['image']['tmp_name'] is the temporary filename of the file //in which the uploaded file was stored on the server $size=filesize($_FILES['image']['tmp_name']); //compare the size with the maxim size we defined and print error if bigger if ($size > MAX_SIZE) { echo '<p class="error">You have exceeded the file size limit of 200kb.</p>'; $errors=1; } //we will give an unique name, for example the time in unix time format $image_name=time().'.'.$extension; //the new name will be containing the full path where it will be stored (images folder) $newname="images/uploads/".$image_name; //we verify if the image has been uploaded, and print error instead $copied = copy($_FILES['image']['tmp_name'], $newname); if (!$copied) { echo '<p class="error">Copy unsuccessfull! Please try again later.</p>'; $errors=1; }}}} //If no errors registered, print the success message if(isset($_POST['submit']) && !$errors) { echo '<p class="info">File Uploaded Successfully! Upload another?</p>'; } ?> <!--next comes the form, you must set the enctype to "multipart/frm-data" and use an input type "file" --> <form name="newad" method="post" enctype="multipart/form-data" action="managegallery.php"> <p>Select an image to upload:<br/> <input type="file" name="image"><br/><br/> Enter a caption for your image:<br/> <input type="text" name="caption" size="30" value=" <?php if(isset($_POST['caption'])) echo $_POST['caption'];?>" maxlength="35"><br/><br/> <input name="submit" type="submit" value="Upload to gallery"> </form> </p> Thanks very much!! Link to comment https://forums.phpfreaks.com/topic/55060-a-case-for-using-switch/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.