Good evening to all. I want to ask if anyone can help.
I found this php upload class (free and good i thing) i want to report errors such as wrong extention file,or big file and so but i am comfused(not good in oop php).Could anyone help?
The class
<?php
/*
|-----------------
| Author: Life.Object
| E-Mail:
[email protected]
| Website: http://www.tutorialchip.com/
| Help: http://www.tutorialchip.com/php-upload-class/
| Version: 1.0
| Released: December 18, 2010
| Updated: December 18, 2010
|------------------
*/
class chip_upload {
/*
|---------------------------
| Properties
|---------------------------
*/
private $upload_hook = array();
private $args = array (
'upload_file' => NULL,
'upload_directory' => NULL,
'allowed_size' => 512000,
'extension_check' => TRUE,
'upload_overwrite' => FALSE,
);
private $allowed_extensions = array (
/* Archives */
'zip' => TRUE,
'7z' => TRUE,
/* Documents */
'txt' => TRUE,
'pdf' => TRUE,
'doc' => TRUE,
'xls' => TRUE,
'ppt' => TRUE,
/* Executables */
'exe' => FALSE,
/* Images */
'gif' => TRUE,
'png' => TRUE,
'jpg' => TRUE,
'jpeg' => TRUE,
/* Audio */
'mp3' => TRUE,
'wav' => TRUE,
/* Video */
'mpeg' => TRUE,
'mpg' => TRUE,
'mpe' => TRUE,
'mov' => TRUE,
'avi' => TRUE
);
/*
|---------------------------
| Constructor
|
| @public
| @param array $args
| @param array $allowed_extensions
|
|---------------------------
*/
public function __construct() {
}
/*
|---------------------------
| Print variable in readable format
|
| @public
| @param string|array|object $var
|
|---------------------------
*/
public function chip_print( $var ) {
echo "<pre>";
print_r($var);
echo "</pre>";
}
/*
|---------------------------
| Update default arguments
| It will update default array of class i.e $args
|
| @private
| @param array $args - input arguments
| @param array $defatuls - default arguments
| @return array
|
|---------------------------
*/
private function chip_parse_args( $args = array(), $defaults = array() ) {
return array_merge( $defaults, $args );
}
/*
|---------------------------
| Get extension and name of file
|
| @private
| @param string $file_name
| @return array - having file_name and file_ext
|
|---------------------------
*/
private function chip_extension($file_name) {
$temp = array();
$temp['file_name'] = strtolower( substr( $file_name, 0, strripos( $file_name, '.' ) ) );
$temp['file_extension'] = strtolower( substr( $file_name, strripos( $file_name, '.' ) + 1 ) );
return $temp;
}
/*
|---------------------------
| Get safe string
|
| @private
| @param string $var
| @return string
|
|---------------------------
*/
public function chip_safe_string( $var = "", $separator = "" ) {
return preg_replace('|[^a-zA-Z0-9_]|',$separator,$var);
}
/*
|--------------------------
| Get error status of uploaded file
|
| @private
| @param integer $error_code
| @return string
|--------------------------
*/
private function chip_upload_error( $error_code ) {
switch ( $error_code ) {
case UPLOAD_ERR_OK:
$error = "All OK";
break;
case UPLOAD_ERR_INI_SIZE:
$error = "The uploaded file exceeds the upload_max_filesize directive (".ini_get("upload_max_filesize").") in php.ini.";
break;
case UPLOAD_ERR_FORM_SIZE:
$error = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
break;
case UPLOAD_ERR_PARTIAL:
$error = "The uploaded file was only partially uploaded.";
break;
case UPLOAD_ERR_NO_FILE:
$error = "No file was uploaded.";
break;
case UPLOAD_ERR_NO_TMP_DIR:
$error = "Missing a temporary folder.";
break;
case UPLOAD_ERR_CANT_WRITE:
$error = "Failed to write file to disk.";
break;
default:
$error = "Unknown Error.";
}
return $error;
}
/*
|---------------------------
| Set default arguments
| It will set default array of class i.e $args
|
| @private
| @param array $args
| @return 0
|
|---------------------------
*/
private function set_args( $args = array() ) {
$defaults = $this->get_args();
$args = $this->chip_parse_args( $args, $defaults );
$this->args = $args;
}
/*
|---------------------------
| Get default arguments
| It will get default array of class i.e $args
|
| @public
| @return array
|
|---------------------------
*/
public function get_args() {
return $this->args;
}
/*
|---------------------------
| Set default allowed extensions
| It will set default array of class i.e $allowed_extensions
|
| @private
| @param array $allowed_extensions
| @return 0
|
|---------------------------
*/
private function set_allowed_extensions( $allowed_extensions = array() ) {
$defaults = $this->get_allowed_extensions();
$allowed_extensions = $this->chip_parse_args( $allowed_extensions, $defaults );
$this->allowed_extensions = $allowed_extensions;
}
/*
|---------------------------
| Get default allowed extensions
| It will get default array of class i.e $allowed_extensions
|
| @public
| @return array
|
|---------------------------
*/
public function get_allowed_extensions() {
return $this->allowed_extensions;
}
/*
|---------------------------
| Set Upload Var
| It will set upload variable
|
| @private
| @param string $upload_directory
! @return boolean
|
|---------------------------
*/
private function set_upload_var( $files ) {
$temp = array();
$files_upload_attributes = array( 'name', 'type', 'tmp_name', 'error', 'size' );
//$this->chip_print( $files );
$upload_files = count( $files['name'] );
$upload_files = ( !empty( $upload_files ) ) ? $upload_files : 0 ;
$foreachindex = 0;
for( $i = 1; $i <= $upload_files; $i++ ) {
foreach( $files_upload_attributes as $val ) {
$temp[$i][$val] = $files[$val][$foreachindex];
if( $val == "error" ) {
$temp[$i]['error_status'] = $this->chip_upload_error( $files[$val][$foreachindex] );
}
}
++$foreachindex;
}
return $temp;
}
/*
|---------------------------
| Get Upload Var
| It will set upload variable
|
| @private
| @param array $files
! @return array
|
|---------------------------
*/
public function get_upload_var( $files = array() ) {
return $this->set_upload_var( $files );
}
/*
|---------------------------
| Set Directory Path
| It will validate upload directory
|
| @private
| @param string $upload_directory
! @return boolean
|
|---------------------------
*/
private function set_directory_path( $upload_directory ) {
if( is_dir( $upload_directory ) ) {
return 1;
}
return 0;
}
/*
|---------------------------
| Set Directory Writable
| It will validate writable directory
|
| @private
| @param string $upload_directory
! @return boolean
|
|---------------------------
*/
private function set_directory_writable( $upload_directory ) {
if( is_writable( $upload_directory ) ) {
return 1;
}
return 0;
}
/*
|---------------------------
| Set Upload Hook
| It will set upload hook
|
| @private
| @param array $var
|
|---------------------------
*/
private function set_upload_hook( $var = array() ) {
$this->upload_hook = $var;
}
/*
|---------------------------
| Get Upload Hook
| It will Get upload hook
|
| @public
| @param array $var
|
|---------------------------
*/
public function get_upload_hook() {
return $this->upload_hook;
}
/*
|---------------------------
| Set Upload
| It will upload file.
|
| @private
! @return array
|
|---------------------------
*/
public function set_upload( $args, $allowed_extensions ) {
/* Arguments */
$this->set_args( $args );
$args = $this->get_args();
//$this->chip_print( $args );
extract( $args );
/* Allowed Extensions */
$this->set_allowed_extensions( $allowed_extensions );
$allowed_extensions = $this->get_allowed_extensions();
//$this->chip_print( $allowed_extensions );
/* Output */
$temp = array();
$temp['upload_directory'] = "Invalid - " . $upload_directory;
$temp['upload_directory_writable'] = "Invalid - Directory is not writable";
$temp['upload_file_extension'] = "Invalid - Extension is not allowed";
$temp['upload_file_size'] = "Invalid - Size " . $upload_file['size'] . " bytes";
$temp['upload_process'] = 0;
$temp['upload_move'] = FALSE;
$temp['upload_overwrite'] = $upload_overwrite;
/* Submitted Data */
$temp['upload_file']['name'] = $upload_file['name'];
$temp['upload_file']['type'] = $upload_file['type'];
$temp['upload_file']['tmp_name'] = $upload_file['tmp_name'];
$temp['upload_file']['error'] = $upload_file['error'];
$temp['upload_file']['error_status'] = $upload_file['error_status'];
$temp['upload_file']['size'] = $upload_file['size'];
/*
|---------------------------
| Set 1 - Directory Path Validation
|---------------------------
*/
if( !empty($upload_directory) ) {
/* Upload Directory Path Validation */
if ( $this->set_directory_path( $upload_directory ) ) {
$temp['upload_directory'] = "Valid - " . $upload_directory;
$temp['upload_process']++;
/*
|---------------------------
| Set 2 - Directory Write Permissions
|---------------------------
*/
if ( $this->set_directory_writable( $upload_directory ) ) {
$temp['upload_directory_writable'] = "Valid - Directory is writable";
$temp['upload_process']++;
$temp['upload_file']['directory'] = $upload_directory;
} // if ( $this->set_directory_writable( $upload_directory ) )
} // if ( $this->set_directory_path( $upload_directory ) )
} // if( !empty($upload_directory) )
if ( !empty( $upload_file['name'] ) ) {
/*
|---------------------------
| Set 3 - Extension Validation
|---------------------------
*/
/* File Name and Extension */
$nameext = $this->chip_extension( $upload_file['name'] );
$file_name = $nameext['file_name'];
$file_extension = $nameext['file_extension'];
$temp['upload_file']['nameonly'] = $file_name;
$temp['upload_file']['extension'] = $file_extension;
/* Allowed Extension - Validation */
if ( $extension_check == FALSE ) {
$temp['upload_file_extension'] = "Valid - Extension is allowed";
$temp['upload_process']++;
}
else if ( array_key_exists( $file_extension, $allowed_extensions ) && $allowed_extensions[$file_extension] == TRUE ) {
$temp['upload_file_extension'] = "Valid - Extension is allowed";
$temp['upload_process']++;
}
/*
|---------------------------
| Set 4 - Size Validation
|---------------------------
*/
/* Allowed Size Manipulation*/
if ( $allowed_size >= $upload_file['size'] ) {
$temp['upload_file_size'] = "Valid - Size " . $upload_file['size'] . " bytes";
$temp['upload_process']++;
}
} // if ( !empty( $upload_file['name'] ) )
/*
|---------------------------
| Upload Move Status
|---------------------------
*/
if ( $temp['upload_process'] == 4 && is_uploaded_file( $upload_file['tmp_name'] ) && $upload_file['error'] == UPLOAD_ERR_OK ) {
$temp['upload_move'] = TRUE;
}
/*
|---------------------------
| Upload Hook
|---------------------------
*/
$this->set_upload_hook( $temp );
//$this->chip_print( $temp );
return $temp;
}
/*
|---------------------------
| Get Upload
| It will upload file.
|
| @public
! @return array
|
|---------------------------
*/
public function get_upload( $args = array(), $allowed_extensions = array() ) {
return $this->set_upload( $args, $allowed_extensions );
}
/*
|---------------------------
| Set Upload Move
| It will upload file.
|
| @public
! @return array
|
|---------------------------
*/
public function set_upload_move( $name ) {
/* Output */
$temp = array();
/* Upload Hook */
$upload_hook = $this->get_upload_hook();
if ( $upload_hook['upload_move'] == TRUE ) {
/*
|---------------------------
| Move Upload Manipulation
|---------------------------
*/
$name = ( !empty( $name ) ) ? $name : $upload_hook['upload_file']['nameonly'];
$name = $this->chip_safe_string( $name );
$extension = $upload_hook['upload_file']['extension'];
$temp_name = $upload_hook['upload_file']['tmp_name'];
$dest_name = $upload_hook['upload_file']['directory'] . $name . "." . $extension;
/*
|---------------------------
| Overwrite Validation
|---------------------------
*/
if ( $upload_hook['upload_overwrite'] == FALSE ) {
if ( file_exists( $dest_name ) ) {
$i = 1;
$max_loops = 100;
while ( file_exists( $dest_name ) && $i <= $max_loops ) {
$name_new = $name . "_" . $i;
$name_new = $this->chip_safe_string( $name_new );
$dest_name = $upload_hook['upload_file']['directory'] . $name_new . "." . $extension;
$i++;
} // while ( file_exists( $dest_name ) )
} // if ( file_exists( $dest_name ) )
}
/*
|---------------------------
| Move File
|---------------------------
*/
$name = ( empty($name_new) ) ? $name : $name_new ;
if ( move_uploaded_file( $temp_name, $dest_name ) ) {
$temp['uploaded_status'] = TRUE;
$temp['uploaded_file'] = $name;
$temp['uploaded_extension'] = $extension;
$temp['uploaded_directory'] = $dest_name;
} else {
$temp['uploaded_status'] = FALSE;
$temp['uploaded_file'] = $name;
$temp['uploaded_extension'] = $extension;
$temp['uploaded_directory'] = $dest_name;
} // if ( move_uploaded_file( $temp_name, $dest_name ) )
}
return $temp;
//return $this->set_upload_move( $name );
}
/*
|---------------------------
| Get Upload Move
| It will upload file.
|
| @public
| @param string $name
! @return array
|
|---------------------------
*/
public function get_upload_move( $name = FALSE ) {
return $this->set_upload_move( $name );
}
/*
|---------------------------
| Destructor
|---------------------------
*/
public function __destruct() {
}
}
?>
and index where i want the errors to be displayed
<?php
/*
|-----------------
| Chip Error Manipulation
|------------------
*/
error_reporting(-1);
/*
|-----------------
| Chip Constant Manipulation
|------------------
*/
define( "CHIP_DEMO_FSROOT", __DIR__ . "/" );
/*
|-----------------
| POST
|------------------
*/
if( $_POST ) {
/*
|-----------------
| Chip Upload Class
|------------------
*/
require_once("class.chip_upload.php");
/*
|-----------------
| Upload(s) Directory
|------------------
*/
$upload_directory = CHIP_DEMO_FSROOT . "uploads/";
/*
|-----------------
| Class Instance
|------------------
*/
$object = new chip_upload();
/*
|-----------------
| $_FILES Manipulation
|------------------
*/
$files = $object->get_upload_var( $_FILES['upload_file'] );
//$object->chip_print( $files );
/*
|-----------------
| Upload File
|------------------
*/
foreach( $files as $file ) {
/*
|---------------------------
| Upload Inputs
|---------------------------
*/
$args = array(
'upload_file' => $file,
'upload_directory' => $upload_directory,
'allowed_size' => 512000,
'extension_check' => TRUE,
'upload_overwrite' => FALSE,
);
$allowed_extensions = array(
'pdf' => FALSE,
);
/*
|---------------------------
| Upload Hook
|---------------------------
*/
$upload_hook = $object->get_upload( $args, $allowed_extensions );
//$object->chip_print( $upload_hook );
//exit;
/*
|---------------------------
| Move File
|---------------------------
*/
if( $upload_hook['upload_move'] == TRUE ) {
/*
|---------------------------
| Any Logic by User
|---------------------------
*/
/*
|---------------------------
| Move File
|---------------------------
*/
$upload_output[] = $object->get_upload_move();
//$object->chip_print( $upload_output );
} else {
/*$temp['uploaded_status'] = FALSE;
$temp['uploaded_file'] = $upload_hook['upload_file']['name'] ;
$upload_output[] = $temp;*/
}
} // foreach( $files as $file )
} // if( $_POST )
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" media="all" href="style.css" />
<title>Chip Upload Demo</title>
</head>
<body>
<div id="wrap">
<div id="wrapdata">
<div id="header">
<div id="headerdata">
<div class="chipboxw1 chipstyle1">
<div class="chipboxw1data">
<h2 class="margin0">Chip Upload</h2>
</div>
</div>
</div>
</div>
<div id="content">
<div id="contentdata">
<?php if( !empty($upload_output) ): ?>
<?php
//$object->chip_print( $upload_output );
foreach( $upload_output as $val ):
?>
<div class="chipboxw1 chipstyle2">
<div class="chipboxw1data">
<h2 class="margin0"><?php
include("connect.php");
$insertpost="INSERT INTO eikones_diadromi(email,path) values('
[email protected]','images/$val[uploaded_file].$val[uploaded_extension]')";
mysql_query($insertpost) or die("provlima insert");
echo $val['uploaded_file'] . "." . $val['uploaded_extension'] . " Uploaded"; ?></h2>
</div>
</div>
<?php endforeach; ?>
<?php endif; ?>
<div class="chipboxw1 chipstyle1">
<div class="chipboxw1data">
<form method="post" action="" enctype="multipart/form-data">
<p>Upload File 1: <input name="upload_file[]" id="upload_file[]" type="file" class="inputtext" /></p>
<p>Upload File 2: <input name="upload_file[]" id="upload_file[]" type="file" class="inputtext" /></p>
<p>Upload File 3: <input name="upload_file[]" id="upload_file[]" type="file" class="inputtext" /></p>
<p>Upload File 4: <input name="upload_file[]" id="upload_file[]" type="file" class="inputtext" /></p>
<p>Upload File 5: <input name="upload_file[]" id="upload_file[]" type="file" class="inputtext" /></p>
<p>Demo Allowed Files: .jpg</p>
<input type="submit" name="submit" value="Upload File" />
</form>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footerdata">
<div class="chipboxw1 chipstyle1">
<div class="chipboxw1data">
© <a href="http://www.tutorialchip.com/">TutorialChip</a>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
Thank you in advance