Recently, I have been very interested in PHP file processing, so I have read many articles on file processing on many websites. However, most of the PHP file processing knowledge on many domestic websites is copied from mine and from yours. , most of the things found by searching on baidu.com or google.com are duplicates. Recently, I published an article on a foreign website and it felt very good, so I recommend it to everyone to read.
First of all, we need to explain the operation process of file upload and the knowledge points used:
To upload files, we need to use the type="file" type of the form in HTML, and its enctype property. This is what we all have to use. Of course, we must use the FILE function library, string type function library, directory function library and $_FILES[] among the PHP function libraries.
Perhaps every site may have many restrictions on uploading files. These restrictions include file type, file size, extension, and the existence of the upload directory, the existence of the upload file, and the directory. The writability, readability, renaming of uploaded files and how to copy files from the cache to the directory you need.
Of course, error preprocessing cannot be ignored! If we discuss it further, we can also enable event log recording for file operations.
Below we use a program to implement these functions:
-------------------------- -------------------------------------------------- ----------------
The first is our default variable value, which includes file size, file extension type, MIMI type, and whether to delete the switch Variable
$MAX_SIZE = 2000000;
$FILE_MIMES = array(image/jpeg,image/jpg,image/gif
, ,image/png,application/msword);
$FILE_EXTS = array(.zip,.jpg,.png,.gif);
$DELETABLE = true; Variables:
$site_name = $_SERVER[HTTP_HOST];
$url_dir = "http://".$_SERVER[HTTP_HOST].dirname($_SERVER[PHP_SELF]);
$url_this = "http://".$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF];
$upload_dir = "files/";
$upload_url = $url_dir."/files/";
$message ="";
Create the upload directory and change the permissions accordingly:
if (!is_dir("files")) {
if (!mkdir( $upload_dir))
die ("upload_files directory doesnt exist and creation failed");
if (!chmod($upload_dir,0755))
die ("change permission to 755 failed.");
}
Handling of user requests:
if ($_REQUEST[del] && $DELETABLE) {
$resource = fopen("log.txt ","a");
fwrite($resource,date("Ymd h:i:s")."DELETE - $_SERVER[REMOTE_ADDR]"."$_REQUEST[del]
");
fclose($resource);
if (strpos($_REQUEST[del],"/.")>0); //possible hacking
else if (strpos( $_REQUEST[del],"files/") === false); //possible hacking
else if (substr($_REQUEST[del],0,6)=="files/") {
unlink($_REQUEST[del]);
print "<script>window.location.href=$url_this?message=deleted successfully</script>";
}
}
else if ($_FILES[userfile]) {
$resource = fopen("log.txt","a");
fwrite($resource,date("Ymd h:i:s")."UPLOAD - $_SERVER[REMOTE_ADDR]"
.$_FILES[userfile][name]." "
.$_FILES[userfile][type]."
");
fclose($resource);
$file_type = $_FILES[userfile][type];
$file_name = $_FILES[userfile][name];
$file_ext = strtolower(substr($file_name,strrpos($file_name,".")));
//File size check:
if ( $_FILES[userfile][ size] > $MAX_SIZE)
$message = "The file size is over 2MB.";
//File Type/Extension Check
else if (!in_array($file_type, $FILE_MIMES)
, $upload_url);
print "<script>window.location.href=$url_this?message=$message</script>";
}
else if (!$_FILES[ userfile]);
else
$message = "Invalid File Specified.";
List the files we uploaded:
$handle=opendir($upload_dir);
$filelist = "";
while ($file = readdir($handle)) {
if(!is_dir($file) && !is_link($file)) {
$filelist .= "".$file."";
if ($DELETABLE)
$filelist .= " x";
$filelist .= " ".date("d-m H:i" , filemtime($upload_dir.$file))
. ;
}
}
function do_upload($upload_dir, $upload_url) {
$temp_name = $_FILES[userfile][tmp_name];
$file_name = $_FILES[userfile][name];
$file_name = str_replace("","",$file_name);
$file_name = str_replace("","",$file_name);
$file_path = $upload_dir.$file_name;
//File Name Check
if ( $file_name =="") {
$message = "Invalid File Name Specified";
return $message;
}
$result = move_uploaded_file($temp_name, $file_path);
if (!chmod($file_path,0777))
$message = "change permission to 777 failed.";
else
$message = ($result)?"$file_name uploaded successfully." :
"Somthing is wrong with uploading a file.";
return $message;
}
?>
=$_REQUEST[message]?>
My Files
=$filelist?>
Developed By
CityPost.ca