How I can validate input on form before upload file?

PHP Help: Once uploading a file how do you give them a link to their file?

  • Okay, so on my website I use the below php script, but how do I give the people a link to their images located in a folder named "images" and how do i keep their original file name? Code: <?php //define a maxim size for the uploaded images in Kb define ("MAX_SIZE","100"); //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 errro occures. //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 != "png") && ($extension != "gif")) { //print error message echo '<h1>Unknown extension!</h1>'; $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_nam… //compare the size with the maxim size we defined and print error if bigger if ($size > MAX_SIZE*1024) { echo '<h1>You have exceeded the size limit!</h1>'; $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 will be stored (images //folder) $newname="images/".$image_name; //we verify if the image has been uploaded, and print error instead $copied = copy($_FILES['image']['tmp_name'], $newname); if (!$copied) { echo '<h1>Copy unsuccessfull!</h1>'; $errors=1; }}}} //If no errors registred, print the success message if(isset($_POST['Submit']) && !$errors) { echo "<h1>File Uploaded Successfully!</h1>"; } ?> <!--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=""> <table> <tr><td><input type="file" name="image"></td></tr> <tr><td><input name="Submit" type="submit" value="Upload image"> </td></tr> </table> </form>

  • Answer:

    You would need to make the php create a link based on the actual website url, with the path to the folder and file appended. This would look like : http://mysite.net/images/image.jpg Concatenation of strings will do that, and you can then make a php mail() script to send it IF your site host permits auto mailing. But you have a more serious problem. You need to set up some kind of security, for which you will need a database, then store the file name in the database, and a security code. So apart from sending the link you need to give them the code. Otherwise ANYONE using the link could be accessing ALL the files on that folder. Or anyone finding the images folder could as well. There is not enough room here to write the code up, but before you get into any of that you really need to study the mysql manual and php manual.

Harrison Howard at Yahoo! Answers Visit the source

Was this solution helpful to you?

Other answers

Hello, For me, I usually rename the user image to avoid the auto replace of move_uploaded_file() function, the new name (in my program) is a time stamp for the current date,time and a random 3 digits at the end. Now if you want to keep their names then register the image old name in the database, and when user choose to download his picture, rename it to the old name...

Feras Jobeir

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.