⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 browse.php

📁 一款文件上传程序
💻 PHP
字号:
<?php
define ( 'NO_AUTH_CHECK', 1 );
define ( 'BROWSE_PHP', 1 );
require_once ( 'includes/commons.inc.php' );

$userfiles_url = $UPL['SETTINGS']['userfiles_url'];
$uploader_view = $UPL['SETTINGS']['uploader_view'];

if ( $UPL['SETTINGS']['browsing'] == 'none' )
{
	$tpl_message->set ( 'message', $lang_browse['disabled'] );
	$tpl_uploader->setr ( 'content', $tpl_message, 1 );
	exit;
}
elseif ( $UPL['SETTINGS']['browsing'] == 'reg' && $UPL['USER']['logged_in'] == false )
{
	$tpl_message->set ( 'message', $lang_misc['login_required'] );
	$tpl_uploader->setr ( 'content', $tpl_message, 1 );
	exit;
}

switch ( $action )
{
	case 'browse':
	{
		$tpl_browse = new Template ( TPL_DIR . 'tpl_user.php' );
		$tpl_browse->set ( 'action', $action );

		$userid = abs ( (int)gpc ( 'userid', 'G', 0 ) );
		$username = gpc ( 'username', 'G', '' );
		$folder = path_decode ( gpc ( 'folder', 'G', '' ) );
		$error = 'none';

		if ( $username != '' )
			$mysqlDB->query ( sprintf ( "SELECT * FROM uploader_users WHERE username='%s' LIMIT 1", $mysqlDB->escape ( $username ) ) );
		else
			$mysqlDB->query ( sprintf ( "SELECT * FROM uploader_users WHERE userid=%d LIMIT 1", $userid ) );

		if ( $mysqlDB->getRowCount() )
		{
			$userinfo = $mysqlDB->getAssoc();
			$userid = $userinfo['userid'];
			$mysqlDB->free();

			if ( $userinfo['fl_has_public'] )
			{
				// User directory and URL
				$user_root = $UPL['SETTINGS']['userfiles_dir'] . $userid . '/';
				$user_url  = $UPL['SETTINGS']['userfiles_url'] . $userid . '/';

				// get all folders
				$user_contents = get_contents ( $user_root );
				$user_folders =& $user_contents['dirs'];
				$count = count ( $user_folders );
				$public_folders = array ( );

				for ( $i = 0; $i < $count; ++$i )
				{
					$folder_info = get_folder_info ( $user_root . $user_folders[$i]['path'] );

					if ( $folder_info['is_public'] )
					{
						$public_folders [] = array_merge ( $user_folders[$i], $folder_info );
					}
				}
				$public_folders_count = count ( $public_folders );

				if ( !$public_folders_count )
				{
					$error = parse ( $lang_browse['no_public_folders'], '{user}', $userinfo['username'] );

					// must be a mistake, user should not have public folders
					$mysqlDB->query ( "UPDATE uploader_users SET fl_has_public=0 WHERE userid={$userid} LIMIT 1;" );
				}
				else
				{
					for ( $i = 0; $i < $public_folders_count; $i++ )
					{
						$public_folders[$i]['description'] = htmlentities ( $public_folders[$i]['description'] );
						$public_folders[$i]['size'] = get_size ( $public_folders[$i]['size'], 'B', 0 );
						$public_folders[$i]['browse_url'] = MOD_REWRITE ? 'members/browse/' . $userid . '/' . ( $public_folders[$i]['path'] ) : 'browse.php?action=browse&amp;userid=' . $userid . ( $public_folders[$i]['path'] == '' ? '' : '&amp;folder=' . path_encode ( $public_folders[$i]['path'] ) );
					}

					// No folder selected, pick the first selected folder
					$index = $folder == '' ? '<MAIN_FOLDER>' : $folder;

					if ( !isset ( $user_contents['files'][$index] ) )
					{
						$error = $lang_browse['bad_folder'];
					}
					else
					{
						$folder_info = get_folder_info ( $user_root . $folder );
						if ( $index == '<MAIN_FOLDER>' && !$folder_info['is_public'] )
						{
							$index = $public_folders[0]['path'];
							$folder = $public_folders[0]['path'];
							$folder_info = get_folder_info ( $user_root . $index );
						}
						elseif ( !$folder_info['is_public'] )
						{
							$error = $lang_browse['bad_folder'];
						}
					}
				}

				if ( $error != 'none' )
				{
					$tpl_message->set ( 'message', $error );
					$tpl_uploader->set ( 'page_title', $lang_misc['error'] );
					$tpl_uploader->set ( 'content', $tpl_message, 1 );
					exit;
				}

				$user_files = &$user_contents['files'][$index];
				$user_files_count = count ( $user_files );

				for ( $i = 0; $i < $user_files_count; ++$i )
				{
					$ref =& $user_files[$i];
					$ref['ext']		= get_extension ( $ref['name'] );
					if ( !isset ( $ref['date'] ) )
					{
						$ref['date']		= filemtime ( $user_root . $folder . '/' . $ref['name'] );
					}

					$ref['file_url']   	= $user_url . clean_url ( $folder . '/' . rawurlencode ( $ref['name'] ) );
					$ref['date_raw']   	= $ref['date'];
					$ref['date']       	= date ( $UPL['CONFIGS']['TIME_FORMAT'], $ref['date'] );
					$ref['size_raw']   	= $ref['size'];
					$ref['form_name']  	= rawurlencode ( $ref['name'] );
					$ref['full_name']  	= htmlentities ( $ref['name'] );
					$ref['has_thumb']   = $ref['is_image'] && is_file ( $user_root . $folder . '/thumbs/' . $ref['name'] ) ? 1 : 0;
					$ref['thumb_url']   = $ref['has_thumb'] ? $user_url . $folder . '/thumbs/' . $ref['name'] :  '';

					if ( $ref['is_image'] && $uploader_view )
					{
						if ( MOD_REWRITE )
						{
							$ref['file_url'] = $userfiles_url . 'view/' . $userinfo['userid'] . '/' . trim ( clean_url ( $folder . '/' . rawurlencode ( $ref['name'] ) ), '/' );
						}
						else $ref['file_url'] = 'view.php?userid=' . $userinfo['userid'] . '&amp;file=' . trim ( clean_url ( $folder . '/' . rawurlencode ( $ref['name'] ) ), '/' );
					}
					else $ref['file_url']   	= $user_url . clean_url ( $folder . '/' . rawurlencode ( $ref['name'] ) );
				}

				$userinfo['info_url'] = MOD_REWRITE ? 'members/info/' . $userinfo['userid'] : 'browse.php?action=info&amp;userid=' . $userinfo['userid'];
				$userinfo['message_url'] = 'usercp.php?action=sendpm&userid=' . $userinfo['userid'];

				$tpl_browse->set ( 'current_folder_name', basename ( $folder ) );
				$tpl_browse->set ( 'current_folder_description', htmlentities ( $folder_info['description'] ) );
				$tpl_browse->set ( 'current_folder_is_gallery', $folder_info['is_gallery'] );
				$tpl_browse->setr ( 'user_files', $user_files );
				$tpl_browse->setr ( 'user', $userinfo );
				$tpl_browse->setr ( 'public_folders', $public_folders );
				$tpl_uploader->setr ( 'content', $tpl_browse, 1 );
			}
			else
			{
				$tpl_message->set ( 'message', parse ( $lang_browse['no_public_folders'], '{user}', $userinfo['username'] ) );
				$tpl_message->set ( 'back_url', 'browse.php' );
				$tpl_uploader->setr ( 'content', $tpl_message, 1 );
				exit;
			}
		}
		else
		{
			$tpl_message->set ( 'message', $lang_misc['user_not_found'] );
			$tpl_uploader->setr ( 'content', $tpl_message, 1 );
			exit;
		}
	}
	break;

	case 'info':
	{
		$tpl_userinfo = new Template ( TPL_DIR . 'tpl_user.php' );
		$tpl_userinfo->set ( 'action', $action );

		$userid = abs((int)gpc ( 'userid', 'G', 0 ));

		$mysqlDB->query ( "SELECT * FROM uploader_users WHERE userid=$userid LIMIT 1;" );

		if ( $mysqlDB->getRowCount() )
		{
			$userinfo = $mysqlDB->getAssoc();

			// format user info
			$userinfo['reg_date_ago'] = number_format ( ( time() - $userinfo['reg_date'] ) / 86400, 1 );
			$userinfo['reg_date'] = date ( $UPL['CONFIGS']['TIME_FORMAT'], $userinfo['reg_date'] );
			$userinfo['last_login_ago'] = number_format ( ( time() - $userinfo['last_login_time'] ) / 86400, 1 );
			$userinfo['last_login'] = date ( $UPL['CONFIGS']['TIME_FORMAT'], $userinfo['last_login_time'] );
			$userinfo['browse_url'] = MOD_REWRITE ? 'members/browse/' . $userid : 'browse.php?action=browse&amp;userid=' . $userid;
			$userinfo['message_url'] = 'usercp.php?action=sendpm&userid=' . $userid;
			$tpl_userinfo->setr ( 'user', $userinfo );
			$tpl_uploader->set ( 'page_title', $lang_browse['title2'] );
			$tpl_uploader->setr ( 'content', $tpl_userinfo, 1 );
		}
		else
		{
			$tpl_message->set ( 'message', $lang_misc['user_invalid'] );
			$tpl_uploader->setr ( 'content', $tpl_message, 1 );
			exit;
		}
	}
	break;

	default:
	{
		$tpl_browse_users = new Template ( TPL_DIR .  'tpl_browse.php' );
		$public_only = gpc ( 'public', 'G', 0 );
		$current_page = abs ( intval ( gpc ( 'page', 'G', 1 ) ) );
		$where = $public_only ? 'WHERE fl_has_public=1' : '';

		// get total users
		$total_users = 0;
		$all_users = array ( );
		$mysqlDB->query ( "SELECT COUNT(*) AS total_users FROM uploader_users $where;" );
		if ( $mysqlDB->getRowCount() )
		{
			$result = $mysqlDB->getAssoc();
			$total_users = $result['total_users'];
			$mysqlDB->free();
		}
		$number_of_pages = ceil ( $total_users / $UPL['CONFIGS']['USERLIST_PERPAGE'] );

		if ( $current_page > $number_of_pages || $current_page < 1 )
		{
			$current_page = 1;
		}
		$start = ($current_page-1)*$UPL['CONFIGS']['USERLIST_PERPAGE'];
		$end = $UPL['CONFIGS']['USERLIST_PERPAGE'];

		if ( !$mysqlDB->query ( "SELECT userid,username,reg_date,email,pref_show_email,fl_has_public AS has_public FROM uploader_users $where ORDER BY username LIMIT $start, $end;" ) ) exit ( $mysqlDB->error ( __LINE__, __FILE__ ) );

		if ( $mysqlDB->getRowCount() )
		{
			while ( false !== ( $user = $mysqlDB->getAssoc() ) )
			{
				$user['username']		= $user['username'];
				$user['browse_url']		= MOD_REWRITE ? 'members/browse/' . $user['userid'] : 'browse.php?action=browse&amp;userid=' . $user['userid'];
				$user['info_url']		= MOD_REWRITE ? 'members/info/' . $user['userid'] : 'browse.php?action=info&amp;userid=' . $user['userid'];
				$user['message_url']	= 'usercp.php?action=sendpm&userid=' . $user['userid'];
				$user['reg_date']		= date ( $UPL['CONFIGS']['TIME_FORMAT3'], $user['reg_date'] );
				$user['email']			= $user['pref_show_email'] ? $user['email'] :  $lang_misc['email_hidden'];
				$user_list [] = $user;
			}
			$mysqlDB->free();
		}

		// pages links
		$page_links = array ( );
		if ( $total_users )
		{
			for ( $i = 1; $i <= $number_of_pages; ++$i ) $page_links [] = array ( 'url' => MOD_REWRITE ? 'members/' . ( $public_only ? 'public/' : '' ) . $i : 'browse.php?page=' . $i . ( $public_only ? '&amp;public=1' : '' ), 'number' => $i );
			if ( $current_page != $number_of_pages ) $page_links [] = array ( 'url' => MOD_REWRITE ? 'members/' . ( $public_only ? 'public/' : '' ) . ($current_page+1) : 'browse.php?page=' . ( $current_page + 1 ) . ( $public_only ? '&amp;public=1' : '' ), 'number' => 'NEXT' );
			if ( $current_page != 1 ) array_unshift ( $page_links, array ( 'url' => MOD_REWRITE ? 'members/' . ( $public_only ? 'public/' : '' ) . ($current_page-1) : 'browse.php?page=' . ( $current_page - 1 ) . ( $public_only ? '&amp;public=1' : '' ), 'number' => 'PREV' ) );
		}

		$tpl_browse_users->set ( 'public_only', $public_only );
		$tpl_browse_users->set ( 'pages', $page_links );
		$tpl_browse_users->set ( 'current_page', $current_page );
		$tpl_browse_users->set ( 'total_users', $total_users );
		$tpl_browse_users->setr ( 'users', $user_list );
		$tpl_uploader->set ( 'page_title', $lang_browse['title1'] );
		$tpl_uploader->setr ( 'content', $tpl_browse_users, 1 );
	}
	break;
}
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -