File Uploading Class with JSON works as follows:
1. It can validate a user before the file is being uploded to the server.
2. It can easily validate the size of the file provided with the permitted file size.
3. It can test whether the file is alredy being uploaded or not?
4. It can check strong file extension matching provided by the programmer as an array. So that the user can't upload anonymous file.
5. It also writes a log file in the server about the history of the file being uploaded.
upload_class.php
<?php
class Upload_Files {
var $temp_file_name ;
var $file_name ;
var $upload_dir ;
var $upload_log_dir ;
var $max_file_size ;
var $banned_array ;
var $ext_array ;
/*
* purpose: To validate permitted extensions
* @param none
* @reutrn boolean
*/
function validate_extension () {
$file_name = trim ( $this -> file_name );
$extension = strtolower ( strrchr ( $file_name , "." ));
$ext_array = $this -> ext_array ;
$ext_count = count ( $ext_array );
if (! $file_name )
{
return false ;
}
else
{
if (! $ext_array )
{
return true ;
}
else
{
foreach ( $ext_array as $value )
{
$first_char = substr ( $value , 0 , 1 );
if ( $first_char <> "." )
{
$extensions [] = "." . strtolower ( $value );
}
else
{
$extensions [] = strtolower ( $value );
}
}
foreach ( $extensions as $value )
{
if ( $value == $extension )
{
$valid_extension = "TRUE" ;
}
}
if ( $valid_extension )
{
return true ;
}
else
{
return false ;
}
}
}
}
/*
* purpose: To validate file size
* @param none
* @return boolean
*/
function validate_size () {
$temp_file_name = trim ( $this -> temp_file_name );
$max_file_size = trim ( $this -> max_file_size );
if (!empty( $temp_file_name ))
{
$size = filesize ( $temp_file_name );
if ( $size > $max_file_size )
{
return false ;
}
else
{
return true ;
}
}
else
{
return false ;
}
}
/*
* purpose: Check if the file already exists or not
* @param none
* @return boolean
*/
function existing_file () {
$file_name = trim ( $this -> file_name );
$upload_dir = $this -> get_upload_directory ();
if ( $upload_dir == "ERROR" )
{
return true ;
}
else
{
$file = $upload_dir . $file_name ;
if ( file_exists ( $file ))
{
return true ;
}
else
{
return false ;
}
}
}
/*
* purpose: Gets the original file size
* @param none
* @return file size
*/
function get_file_size () {
$temp_file_name = trim ( $this -> temp_file_name );
$kb = 1024 ;
$mb = 1024 * $kb ;
$gb = 1024 * $mb ;
$tb = 1024 * $gb ;
if ( $temp_file_name )
{
$size = filesize ( $temp_file_name );
if ( $size < $kb )
{
$file_size = " $size Bytes" ;
}
elseif ( $size < $mb )
{
$final = round ( $size / $kb , 2 );
$file_size = " $final KB" ;
}
elseif ( $size < $gb )
{
$final = round ( $size / $mb , 2 );
$file_size = " $final MB" ;
}
elseif( $size < $tb )
{
$final = round ( $size / $gb , 2 );
$file_size = " $final GB" ;
}
else
{
$final = round ( $size / $tb , 2 );
$file_size = " $final TB" ;
}
}
else
{
$file_size = "ERROR: NO FILE PASSED TO get_file_size()" ;
}
return $file_size ;
}
/*
* purpose: Gets the maximum file size allowed by the script
* @param none
* @return maximum file size
*/
function get_max_size () {
$max_file_size = trim ( $this -> max_file_size );
$kb = 1024 ;
$mb = 1024 * $kb ;
$gb = 1024 * $mb ;
$tb = 1024 * $gb ;
if ( $max_file_size )
{
if ( $max_file_size < $kb )
{
$max_file_size = "max_file_size Bytes" ;
}
elseif ( $max_file_size < $mb )
{
$final = round ( $max_file_size / $kb , 2 );
$max_file_size = " $final KB" ;
}
elseif ( $max_file_size < $gb )
{
$final = round ( $max_file_size / $mb , 2 );
$max_file_size = " $final MB" ;
}
elseif( $max_file_size < $tb )
{
$final = round ( $max_file_size / $gb , 2 );
$max_file_size = " $final GB" ;
}
else
{
$final = round ( $max_file_size / $tb , 2 );
$max_file_size = " $final TB" ;
}
}
else
{
$max_file_size = "ERROR: NO SIZE PARAMETER PASSED TO get_max_size()" ;
}
return $max_file_size ;
}
/*
* purpose: Check if the user is banned or nor
* @param none
* @return boolean
*/
function validate_user () {
$banned_array = $this -> banned_array ;
$ip = trim ( $_SERVER [ 'REMOTE_ADDR' ]);
$cpu = gethostbyaddr ( $ip );
$count = count ( $banned_array );
if ( $count < 1 )
{
return true ;
}
else
{
foreach( $banned_array as $key => $value )
{
if ( $value == $ip . "-" . $cpu )
{
return false ;
}
else
{
return true ;
}
}
}
}
/*
* purpose: Gets the upload directory
* @param none
* @return upload directory
*/
function get_upload_directory () {
$upload_dir = trim ( $this -> upload_dir );
if ( $upload_dir )
{
$ud_len = strlen ( $upload_dir );
$last_slash = substr ( $upload_dir , $ud_len - 1 , 1 );
if ( $last_slash <> "/" )
{
$upload_dir = $upload_dir . "/" ;
}
else
{
$upload_dir = $upload_dir ;
}
$handle = @ opendir ( $upload_dir );
if ( $handle )
{
$upload_dir = $upload_dir ;
closedir ( $handle );
}
else
{
$upload_dir = "ERROR" ;
}
}
else
{
$upload_dir = "ERROR" ;
}
return $upload_dir ;
}
/*
* purpose: Gets the upload logs directory
* @param none
* @return upload log directory
*/
function get_upload_log_directory () {
$upload_log_dir = trim ( $this -> upload_log_dir );
if ( $upload_log_dir )
{
$ud_len = strlen ( $upload_log_dir );
$last_slash = substr ( $upload_log_dir , $ud_len - 1 , 1 );
if ( $last_slash <> "/" )
{
$upload_log_dir = $upload_log_dir . "/" ;
}
else
{
$upload_log_dir = $upload_log_dir ;
}
$handle = @ opendir ( $upload_log_dir );
if ( $handle )
{
$upload_log_dir = $upload_log_dir ;
closedir ( $handle );
}
else
{
$upload_log_dir = "ERROR" ;
}
}
else
{
$upload_log_dir = "ERROR" ;
}
return $upload_log_dir ;
}
/*
* purpose: Upload a file without validation
* @param none
* @return boolean
*/
function upload_file_no_validation () {
$temp_file_name = trim ( $this -> temp_file_name );
$file_name = trim ( strtolower ( $this -> file_name ));
$upload_dir = $this -> get_upload_directory ();
$upload_log_dir = $this -> get_upload_log_directory ();
$file_size = $this -> get_file_size ();
$ip = trim ( $_SERVER [ 'REMOTE_ADDR' ]);
$cpu = gethostbyaddr ( $ip );
$m = date ( "m" );
$d = date ( "d" );
$y = date ( "Y" );
$date = date ( "m/d/Y" );
$time = date ( "h:i:s A" );
if (( $upload_dir == "ERROR" ) OR ( $upload_log_dir == "ERROR" ))
{
return false ;
}
else
{
if ( is_uploaded_file ( $temp_file_name ))
{
if ( move_uploaded_file ( $temp_file_name , $upload_dir . $file_name ))
{
$log = $upload_log_dir . $y . "_" . $m . "_" . $d . ".txt" ;
$fp = fopen ( $log , "a+" );
fwrite ( $fp , " $ip - $cpu | $file_name | $file_size | $date | $time " );
fclose ( $fp );
return true ;
}
else
{
return false ;
}
}
else
{
return false ;
}
}
}
/*
* purpose: Upload a file with validation
* @param none
* @return boolean
*/
function upload_file_with_validation () {
$temp_file_name = trim ( $this -> temp_file_name );
$file_name = trim ( strtolower ( $this -> file_name ));
$upload_dir = $this -> get_upload_directory ();
$upload_log_dir = $this -> get_upload_log_directory ();
$file_size = $this -> get_file_size ();
$ip = trim ( $_SERVER [ 'REMOTE_ADDR' ]);
$cpu = gethostbyaddr ( $ip );
$m = date ( "m" );
$d = date ( "d" );
$y = date ( "Y" );
$date = date ( "m/d/Y" );
$time = date ( "h:i:s A" );
$existing_file = $this -> existing_file ();
$valid_user = $this -> validate_user ();
$valid_size = $this -> validate_size ();
$valid_ext = $this -> validate_extension ();
if (( $upload_dir == "ERROR" ) OR ( $upload_log_dir == "ERROR" ))
{
return false ;
}
elseif ((((! $valid_user ) OR (! $valid_size ) OR (! $valid_ext ) OR ( $existing_file ))))
{
return false ;
}
else
{
if ( is_uploaded_file ( $temp_file_name ))
{
if ( move_uploaded_file ( $temp_file_name , $upload_dir . $file_name ))
{
$log = $upload_log_dir . $y . "_" . $m . "_" . $d . ".txt" ;
$fp = fopen ( $log , "a+" );
fwrite ( $fp , " $ip - $cpu | $file_name | $file_size | $date | $time \n" );
fclose ( $fp );
return true ;
}
else
{
return false ;
}
}
else
{
return false ;
}
}
}
}
?>
upload.php
<html>
<head>
<title>Upload</title>
<link rel="stylesheet" href="upload.css" type="text/css">
<script language="JavaScript" src="json/json.js"></script>
<script language="JavaScript">
var httpSubmit = getHTTPObject();
/*
* Sends a request to the server
* @param none
* @return none
*/
function getFileInfo()
{
var uploaded = new Uploaded();
uploaded.filesName = '';
var json_text = uploaded.toJSONString();
httpSubmit.open("POST", "json_upload.php" , true);
httpSubmit.onreadystatechange = handleHttpSubmitResponse;
httpSubmit.send(json_text);
}
function Uploaded()
{
this.filesName = "";
}
/*
* Handles response sent from the server
* @param none
* @return none
*/
function handleHttpSubmitResponse()
{
if (httpSubmit.readyState == 4)
{
var uploaded = httpSubmit.responseText.parseJSON();
if(uploaded.filesName == undefined)
{
document.getElementById("showFile").innerHTML = "File not uploaded!";
}
else
{
document.getElementById("showFile").innerHTML = uploaded.filesName;
}
document.getElementById("showFile").style.display = "block";
}
}
function getHTTPObject()
{
var xmlhttp;
if (!xmlhttp)
{
if(window.XMLHttpRequest)
{
try
{
xmlhttp = new XMLHttpRequest();
}
catch(e)
{
xmlhttp = false;
}
}
else if(window.ActiveXObject) // branch for IE/Windows ActiveX version
{
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
xmlhttp = false;
}
}
}
return xmlhttp;
}
}
window.onload = function()
{
setInterval("getFileInfo()",1000);
}
</script>
</head>
<body>
<iframe src="upload.html" style="border-width:1; border-style:solid; border-color:000000; width:300; height:70;">
</iframe><br>
<div class="style1" id="showFile" name="showFile" style="display: none; padding:8px 8px 8px 8px;"></div>
</body>
</html>
upload.html
<html>
<head>
<link rel="stylesheet" href="upload.css" type="text/css">
<script language="JavaScript">
function autoFormSubmit()
{
document.getElementById("upload_form").submit();
}
</script>
</head>
<body>
<form class='style1' name="upload_form" id="upload_form" enctype="multipart/form-data" method="POST" action="upload1.php" onSubmit="return false;">
<input type="hidden" name="MAX_FILE_SIZE" value="100000000" />
Send this file: <input name="userfile" id="userfile" type="file" onChange="autoFormSubmit();"/>
<div id="txt" style="display: none"></div>
</form>
</body>
</html>
phpFreeChat Categories : PHP , AJAX , Complete Programs This script will read all images from a folder and read the files into an array. It uses rand() to get a random number. It will display a random image from the image folder given. Categories : PHP , Arrays , Graphics , Filesystem A simple php file uploader Categories : PHP , Filesystem , HTML and PHP Recursive function to move files on a filesystem. It can be minor changed in order to copy recursively.
Categories : PHP , Filesystem , Algorithms Open directory and File download Categories : PHP , Filesystem , Directories , HTML and PHP 3 lines of Code to extract Tar, Zip, Gzip etc.. Categories : PHP , Filesystem , PHP Classes , Compression javascript cookie settings Categories : PHP , C++ , AJAX GuestBook Light - a plug and play application for any website. Categories : PHP , Complete Programs , Filesystem , Sessions QTO File Manager Categories : Filesystem , filePro , Complete Programs , PHP , Content Management AJAX Data Grid System using php and mysql. A complete login system with the ability to display data in a grid using ajax. Add , update and delete the records without reloading the page. Categories : PHP , AJAX , Databases , MySQL , Java Script The Ajax Tree view class fetches data from a db for the requested parent category id. The data is then stored in an array and converted into JSON (Javascript Object Notation) format. This format is then used by JavaScript for populating tree view. Categories : PHP , PHP Classes , Java Script , AJAX , Databases Functions to read a template file and fill in PHP variables. It will also fill in array variables, displaying parts of the template multiple times.
Categories : PHP , Variables , Filesystem Directory Viewer, Directory Content Viewer, Directory Structure to HTML.
This code will basically create a complete set of HTMLs to let a user
navigate through any directory you want. Excellent code for large file
sharing pages. Categories : Directories , Filesystem , PHP Checking to see if a file exists with PHP Categories : PHP , Filesystem , Perl Massreplace Categories : Filesystem , Regexps , Strings , PHP