Home >Backend Development >PHP Tutorial >Specific ideas and implementation of PHP file upload_PHP tutorial

Specific ideas and implementation of PHP file upload_PHP tutorial

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-07-13 17:20:011060browse

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;
}

?>


   
   

   

     Upload File
     
   

   
   
My Files
   

   
   

   Developed By
   CityPost.ca
   



www.bkjia.comtruehttp://www.bkjia.com/PHPjc/532625.htmlTechArticle最近一段时间对PHP文件处理方面很感兴趣,因此在许多站点上看了许多的文件处理的文章,但是国内许多的站点上的PHP文件处理方面的知识...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn