📄 functions_upload.inc.php
字号:
<?php
require_once'includes/zip.class.php';
function validate_uploaded_file ( &$file, &$errors, &$uploaded )
{
global $lang_upload, $UPL, $user_root, $upload_to, $overwrite, $max_storage, $space_used, $max_file_size, $file_types, $dest_path, $images_only, $dest_folder_info;
if ( is_file ( $file['tmp_name'] ) )
{
@chmod ( $file['tmp_name'], 0777 );
}
// exceeds php limit
if ( $file['error'] == 1 )
{
$errors [] = parse ( $lang_upload['upl_php_exceed'], array ( '{filename}' => $file['name'], '{max_file_size}' => ini_get ( 'upload_max_filesize' ) ) );
return false;
}
// Skip empty fields
if ( $file['error'] == 4 || ( $file['size'] == 0 && $file['tmp_name'] == '' ) )
{
return false;
}
// partial upload
if ( $file['error'] == 3 )
{
$errors [] = parse ( $lang_upload['upl_partial_upload'], '{filename}', $file['name'] );
return false;
}
// empty files
if ( $file['size'] == 0 )
{
$errors [] = parse ( $lang_upload['upl_empty_file'], '{filename}', $file['name'] );
return false;
}
// no PHP errors, check for user restrictions and other stuffs below.
// file exists
if ( file_exists ( $dest_path ) )
{
// come up with a new name for the file
if ( $overwrite == 'rename' )
{
$fname = get_filename ( $file['name'] );
$fext = get_extension ( $file['name'] );
$try = $fname . '(1)' . ( $fext != '' ? '.' . $fext : '' );
// keep trying until file does not exists
for ( $i = 2; file_exists ( $user_root . $upload_to . '/' . $try ); $i++ )
{
$try = $fname . "($i)" . ( $fext != '' ? '.' . $fext : '' );
}
// set current name to new name
$dest_path = $user_root . $upload_to . '/' . $try;
$file['name'] = $try;
}
elseif ( $overwrite == 'skip' )
{
$errors [] = parse ( $lang_upload['upl_skipped'], '{filename}', $file['name'] );
// go on to next file
return false;
}
}
// no more space
if ( $max_storage > 0 && $space_used >= $max_storage )
{
$errors [] = parse ( $lang_upload['upl_storage_full'], '{filename}', $file['name'] );
return false;
}
// bad file extension
if ( $UPL['SETTINGS']['filetypes'] != '' && in_array ( get_extension ( $file['name'] ), explode ( ',', $UPL['SETTINGS']['filetypes'] ) ) )
{
$errors [] = parse ( $lang_upload['upl_bad_extension'], '{filename}', $file['name'] );
return false;
}
// filename is invalid, cannot start with a dot
if ( !preg_match ( '#[a-z0-9]#i', $file['name'][0] ) )
{
$errors [] = parse ( $lang_upload['upl_bad_name_start'], '{filename}', $file['name'] );
return false;
}
// filename is invalid (no bad characters)
if ( preg_match ( $UPL['CONFIGS']['REGEX_INVALID_CHARS'], $file['name'] ) )
{
$errors [] = parse ( $lang_upload['upl_bad_chars'], '{filename}', $file['name'] );
return false;
}
// file is too big
if ( $max_file_size > 0 && $file['size'] >= $max_file_size )
{
$errors [] = parse ( $lang_upload['upl_max_size'], array ( '{filename}' => $file['name'], '{max_file_size}' => get_size ( $max_file_size, 'B', 0 ) ) );
return false;
}
// file type allowed?
if ( !$images_only && $file_types != '' && $file_types != 'ANY' && ( !in_array ( get_extension ( $file['name'] ), explode ( ',', $file_types ) ) ) )
{
$errors [] = parse ( $lang_upload['upl_ext_not_alllowed'], '{filename}', $file['name'] );
return false;
}
$is_image = is_image ( $file['tmp_name'] );
// is file an image?
if ( $images_only && !$is_image )
{
$errors [] = parse ( $lang_upload['upl_not_image'], '{filename}', $file['name'] );
return false;
}
// uploading into a photo folder but isn't an image?
if ( $dest_folder_info['is_gallery'] && !$is_image )
{
$errors [] = parse ( $lang_upload['upl_photo_folder'], array ( '{folder}' => basename ( $upload_to ), '{filename}' => $file['name'] ) );
return false;
}
return true;
}
function process_zip_file ( $file )
{
set_time_limit(60*15);
$zip = new Zip;
if ( !$zip->open($file) ) return false;
while ( false !== ( $zip_entry = $zip->getFile() ) )
{
if ( !is_array ( $zip_entry ) ) continue;
$tmp_name = tempnam ( "/tmp", "zip" );
$buf = $zip_entry['content'];
$fp = @fopen ( $tmp_name, 'ab' );
if ( !$fp ) exit ( 'Could not create temporary file, upload.php on line ' . __LINE__ );
@fwrite ( $fp, $buf );
@fclose ( $fp );
$_FILES[] = array ( 'name' => str_replace ( '/', '_', $zip_entry['name'] ), 'size' => $zip_entry['size'], 'tmp_name' => $tmp_name, 'type' => 'none', 'error' => 0 );
}
$zip->close();
set_time_limit(0);
}
function validate_public_uploaded_file ( &$file, &$errors, &$uploaded )
{
global $lang_upload, $UPL;
if ( is_file ( $file['tmp_name'] ) )
{
@chmod ( $file['tmp_name'], 0777 );
}
// exceeds php limit
if ( $file['error'] == 1 )
{
$errors [] = parse ( $lang_upload['upl_php_exceed'], array ( '{filename}' => $file['name'], '{max_file_size}' => ini_get ( 'upload_max_filesize' ) ) );
return false;
}
// Skip empty fields
if ( $file['error'] == 4 || ( $file['size'] == 0 && $file['tmp_name'] == '' ) )
{
return false;
}
// partial upload
if ( $file['error'] == 3 )
{
$errors [] = parse ( $lang_upload['upl_partial_upload'], '{filename}', $file['name'] );
return false;
}
// empty files
if ( $file['size'] == 0 )
{
$errors [] = parse ( $lang_upload['upl_empty_file'], '{filename}', $file['name'] );
return false;
}
// no PHP errors, check for user restrictions and other stuffs below.
// bad file extension
if ( $UPL['SETTINGS']['filetypes'] != '' && in_array ( get_extension ( $file['name'] ), explode ( ',', $UPL['SETTINGS']['filetypes'] ) ) )
{
$errors [] = parse ( $lang_upload['upl_bad_extension'], '{filename}', $file['name'] );
return false;
}
// filename is invalid, cannot start with a dot
if ( !preg_match ( '#[a-z0-9]#i', $file['name'][0] ) )
{
$errors [] = parse ( $lang_upload['upl_bad_name_start'], '{filename}', $file['name'] );
return false;
}
// filename is invalid (no bad characters)
if ( preg_match ( $UPL['CONFIGS']['REGEX_INVALID_CHARS'], $file['name'] ) )
{
$errors [] = parse ( $lang_upload['upl_bad_chars'], '{filename}', $file['name'] );
return false;
}
// file is too big
if ( $UPL['PUBLIC_SETTINGS']['max_file_size'] > 0 && $file['size'] >= $UPL['PUBLIC_SETTINGS']['max_file_size'] * 1024 )
{
$errors [] = parse ( $lang_upload['upl_max_size'], array ( '{filename}' => $file['name'], '{max_file_size}' => get_size ( $UPL['PUBLIC_SETTINGS']['max_file_size'] * 1024, 'B', 0 ) ) );
return false;
}
// file type allowed?
if ( !$UPL['PUBLIC_SETTINGS']['images_only'] && $UPL['PUBLIC_SETTINGS']['allowed_filetypes'] != 'ANY' && ( !in_array ( get_extension ( $file['name'] ), explode ( ',', $UPL['PUBLIC_SETTINGS']['allowed_filetypes'] ) ) ) )
{
$errors [] = parse ( $lang_upload['upl_ext_not_alllowed'], '{filename}', $file['name'] );
return false;
}
// is file an image?
if ( $UPL['PUBLIC_SETTINGS']['images_only'] && !is_image ( $file['tmp_name'] ) )
{
$errors [] = parse ( $lang_upload['upl_not_image'], '{filename}', $file['name'] );
return false;
}
return true;
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -