Jump to content

how would i limit this?


Noskiw

Recommended Posts

<?php

   // Begin options

   $file_extensions = array(".doc", ".gif", ".jpg", ".png", ".txt", ".mp3", ".mp4", ".psd", ".docx", ".swf", ".fla", ".rar", ".zip", ".flv", ".exe"); // Add or delete the file extensions you want to allow

   $file_extensions_list = ".doc, .gif, .jpg, .png, .txt, .mp3, .mp4, .psd, .docx, .swf, .fla, .rar, .zip, .flv, .exe"; // Type the same as above, without the quotes separating them

   $max_length = 30; // The maximum character length for a file name

   $maximum_file_size = "10240000000"; // In bytes

   $upload_log_file = "upload_log.txt"; // Change this to the log file you want to use

   // End options
   // If you're using a different folder name for uploaded files other than "files", change both occurrences of "files" on lines 27 and 28 below

   $folder_directory = "http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["PHP_SELF"]);
   $message = "";
   $set_chmod = 777;
   $site_uri = "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"];
   $upload_directory = "./uploads/";
   $upload_uri = $folder_directory."./uploads/";
   
   $folder_name_length = strlen($upload_directory);

   if($_FILES["userfile"]) {
   $resource = fopen($upload_log_file,"a");
   fwrite($resource,date("F d, Y / h:i:sa")." - ".$_FILES["userfile"]["name"]." "
   .$_FILES["userfile"]["type"]." uploaded by ".$_SERVER["REMOTE_ADDR"]."\n");
   fclose($resource);

   $file_type = $_FILES["userfile"]["type"];
   $file_name = $_FILES["userfile"]["name"];
   $file_ext = strtolower(substr($file_name,strrpos($file_name,".")));
   @chmod($upload_uri."".$file_name, 0755);
   if($_FILES["userfile"]["size"] > $maximum_file_size) {
   $message = "ERROR: File size cannot be over ".$maximum_file_size." bytes.";
   }

   elseif($file_name == "") $message = "ERROR: Please select a file to upload.";
   elseif(file_exists($upload_directory.$file_name)) $message = "ERROR: A file with that name already exists.";
   elseif(strlen($file_name) > $max_length) $message = "ERROR: The maximum length for a file name is ".$max_length." characters.";
   elseif(!preg_match("/^[A-Z0-9_.\- ]+$/i",$file_name)) $message = "ERROR: Your file name contains invalid characters.";
   elseif(!in_array($file_ext, $file_extensions)) $message = "ERROR: <ins>$file_ext</ins> is not an allowed file extension.";
   else $message = upload_file($upload_directory, $upload_uri);
   header("Location: $site_uri?message=$message");
   }

   elseif(!$_FILES["userfile"]);
   else $message = "ERROR: Invalid file specified.";

   $open = opendir($upload_directory);
   $uploaded_files = "";
   while($file = readdir($open)) {
   if(!is_dir($file) && !is_link($file)) {
   $uploaded_files .= "      <tr>
            <td style=\"background: #fff; color: #000; text-align: left\"><a href=\"$upload_directory$file\" title=\"$file (".filesize($upload_directory.$file)." bytes)\">".$file."</a> (".filesize($upload_directory.$file)." bytes)</td>
         </tr>
         <tr>
            <td style=\"background: #eee; color: #000; text-align: left; text-indent: 20px\">Uploaded <strong>".date("F d, Y / h:ia", filemtime($upload_directory.$file))."</strong></td>";
   $uploaded_files .="
         </tr>
   ";
   }
   }

   function upload_file($upload_directory, $upload_uri) {
   $file_name = $_FILES["userfile"]["name"];
   $file_name = str_replace(" ","_",$file_name);
   $file_path = $upload_directory.$file_name;
   $temporary = $_FILES["userfile"]["tmp_name"];

   $result = move_uploaded_file($temporary, $file_path);
   if(!chmod($file_path,0777))
   $message = "ERROR: A folder to place the files was not found, or the files need to be CHMODed to 777.";
   else $message = ($result)?"File has been uploaded." : "An error has occurred.";
   return $message;
   }
?>

 

i want to be able to limit the $uploaded_files part to 10. but i dont have a clue how. And i want to use pagination but i dont have a mysql database in which i store the uploaded files. Any ideas how. I do have an uploaded log, but its in a .txt file. Any thoughts how?

Link to comment
https://forums.phpfreaks.com/topic/153752-how-would-i-limit-this/
Share on other sites

basically, you'll want to set a limit variable, ie. $limit = 10;

 

then, it all depends on how you will be storing the filenames, ie. in a database, file, etc...

 

i do like so .. i have a field in my db called files .. the file path(s) are imploded before they are inserted, like so, ie. filenameOne.txt|filenameTwo.txt, etc...

 

then, they are extracted and counted, then checked against the $limit var.

 

ultimately, there is a lot more that goes into this, but that's an idea.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.