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

📄 sharefile.php

📁 flashget43的源代码 一个比较常用的下载程序
💻 PHP
字号:
<?php
	//---
	header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
	header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
	header("Cache-Control: no-store, no-cache, must-revalidate");
	header("Cache-Control: post-check=0, pre-check=0", false);
	header("Pragma: no-cache");

	// Report all errors except E_NOTICE
	error_reporting(E_ALL ^ E_NOTICE);

	include_once('inc/smartyinit.php');

	$upldir = './uploaddir/';
	//---
	delete_old_files($upldir);//delete old files
	//---
	$req = array_merge($_GET, $_POST);

	//---
	if(!$req['connid'] || !$req['userid']) die;
	//---

	//setup language
	$lang = $GLOBALS['fc_config']['languages'][$req['lang']];
	if(!isset($lang['dialog']['sharefile'])) $lang = $GLOBALS['fc_config']['languages']['en'];
	//---

	//-------------------------------------------------
	//get file
	//-------------------------------------------------
	$errmsg = '';	
	$f = $_FILES['file'];
	
	if( $f['error'] != 0 ){ $errmsg = $lang['dialog']['common']['upl_error']; }
		
	if( isset($_POST['submit']) && !empty( $f['tmp_name'] ) && $errmsg == '')//file is Uploaded
	{
		
		$pathinfo = pathinfo( $f['name'] );

		$alow_ext = trim(strtolower( $GLOBALS['fc_config']['filesharing']['allowFileExt']));
		$ext = explode(',', $alow_ext );
		
		if( $alow_ext != '' && !in_array(strtolower( $pathinfo['extension'] ), $ext) )
		{	//error not allowed extension
			$errmsg =  $lang['dialog']['common']['ext_not_allowed'];
			$errmsg = str_replace('FILE_EXT', strtoupper($pathinfo['extension']), $errmsg );
			$errmsg = str_replace('ALLOWED_EXT', strtoupper($alow_ext), $errmsg );
		}
		elseif( $f['size'] > $GLOBALS['fc_config']['filesharing']['maxFileSize'] )
		{	//file too big
			$errmsg = $lang['dialog']['common']['size_too_big'];
		}


		if($errmsg != '')
		{
			//echo "<script>alert('$errmsg');</script>";
		}
		else
		{
			$fname =  $upldir . $f['name'];

			if( file_exists($fname) ) $fname = $upldir . basename($pathinfo['basename'], ".{$pathinfo['extension']}")  .'_'. time(). '.' . $pathinfo['extension'];

			//move file do upl dir
			if(move_uploaded_file($f['tmp_name'], $fname) === false)
			{
				$errmsg = $lang['dialog']['common']['upl_error'];
			}
			else
			{
				chmod("$fname",0644);
				//---- chat part
				$message = new Message('fileshare', $req['userid'], $req['roomid'], '');

				//set target
				switch( $req['touser_id'] )
				{
					case -1 : $message->toconnid = null;$message->touserid = null;$message->toroomid = null;break;//send to chat
					case  0 : $message->toroomid = $req['roomid'];break;//send to room
					default : $message->touserid = $req['touser_id'];break;
				}
				$req['touser'] = $req['touser_id'];

				//set message text
				$cms = $GLOBALS['fc_config']['cms'];
				$usr = $cms->getUser($req['userid']);
				$usr_name = $usr['login'];
				$old_val = array('USER_LABEL','F_NAME','F_SIZE');
				$new_val = array($usr_name, $f['name'], convertSize($f['size']));
				$label = str_replace($old_val, $new_val, $lang['dialog']['sharefile']['usr_message']);

				$message->txt = "$label!#@#!$fname!#@#!{$req['userid']}!#@#!{$req['touser']}";
				//---send message
				if( $GLOBALS['fc_config']['enableSocketServer'] ) 
				{
					$service_port = $GLOBALS['fc_config']['socketServer']['port'];

					/* Get the IP address for the target host. */
					$address = gethostbyname($GLOBALS['fc_config']['socketServer']['host']);

					$socket = socket_create(AF_INET, SOCK_STREAM, 0);
					
					if ($socket < 0) {
					    //toLog("ECHO", "socket_create() failed: reason: " . socket_strerror($socket) . "\n");
					} else {
					    //toLog("ECHO", "OK.\n");
					}
					
					//toLog("ECHO", "Attempting to connect to '$address' on port '$service_port'...");
					$result = socket_connect($socket, $address, $service_port);
					if ($result < 0) {
					    //toLog("ECHO", "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n");
					} else {
					    //toLog("ECHO", "OK.\n");
					}

					$in = $message->toXML();
						  
					//toLog("xml", $in);	  
										
					//toLog("ECHO", "Sending request...");
					socket_write($socket, $in, strlen($in));
					//toLog("ECHO", "OK.\n");
					
					//toLog("ECHO", "Closing socket...");
					socket_close($socket);
					//toLog("ECHO", "OK.\n\n");
				}
				else
				{
					$messageQueue = new MessageQueue();
					$messageQueue->addMessage( $message );
				}
				//---
				echo '<script>window.close();</script>';
				exit();
			}
		}

	}

	//---
	ChatServer::purgeExpired();//clear DB
	$cms = $GLOBALS['fc_config']['cms'];
	$usr = $cms->getUser($req['userid']);

	$users = array();
	if($GLOBALS['fc_config']['filesharing']['allowShareChat'] === true || $usr['roles'] == ROLE_ADMIN)
	{
		$users[-1] = $lang['dialog']['sharefile']['chat_users'];
	}
	if($GLOBALS['fc_config']['filesharing']['allowShareRoom'] === true || $usr['roles'] == ROLE_ADMIN)
	{
		$users[0] = $lang['dialog']['sharefile']['all_users'];
	}

	$users = $users + usersinroom($req['roomid']);//get users list

	if( !isset($users[$req['toid']]) )//user from other room
	{
		$usr2 = $cms->getUser($req['toid']);
		$users[$req['toid']] = $usr2['login'];//fix for user from other room
	}
	//---

	function usersinroom( $room = "" )
	{
		$cms = $GLOBALS['fc_config']['cms'];
		$list = array();

		if($room) {
			$stmt = new Statement("SELECT userid, state, color, lang, roomid FROM {$GLOBALS['fc_config']['db']['pref']}connections WHERE userid IS NOT NULL AND roomid=?");
			$rs = $stmt->process($room);
		} else {
			$stmt = new Statement("SELECT userid, state, color, lang, roomid FROM {$GLOBALS['fc_config']['db']['pref']}connections WHERE userid IS NOT NULL");
			$rs = $stmt->process();
		}

		while($rec = $rs->next()) $list[] = array_merge($cms->getUser($rec['userid']), $rec);

		$ret = array();
		foreach( $list as $v=>$k ) $ret[$k['userid']] = $k['login'];

		return $ret;
	}
	//-------------------------------------------------
	//generate html combo
	//-------------------------------------------------
	function htmlSelect($name, $arr, $selected, $addprop='')
	{
		$ret = "<SELECT name=\"$name\" $addprop>";

		foreach($arr as $k=>$v)
		{
			if($selected == $k)
				$sel = 'SELECTED';
			else
				$sel = '';

			if ( trim( $v ) )
				$ret .= "<option value=\"$k\" $sel>$v";
		}

		$ret .=	"</SELECT>";

		return $ret;
	}
	//---
	//-------------------------------------------------
	//delete old files
	//-------------------------------------------------
	function delete_old_files($dir)
	{
		$d = dir($dir);

		while (false !== ($entry = $d->read()))
		{
			$fname = $dir.$entry;
			if ($entry == "." || $entry == ".." || !is_file($fname) || $entry == "index.html") continue;

			$fdif = (time() - filemtime($fname))/(60*60);
			if($GLOBALS['fc_config']['filesharing']['maxFileHoursLife'] < $fdif)
			{
				unlink($fname);
			}
		}
		$d->close();
	}

//---------------------------------------------
//---calculate max file size
//---------------------------------------------
	$post_max_size = ini_get('post_max_size') * 1024 * 1024;
	$upload_max_filesize = ini_get('upload_max_filesize') * 1024 * 1024;
	$defined_max_size = $GLOBALS['fc_config']['filesharing']['maxFileSize'];

	$maxSize =	min( $post_max_size, $upload_max_filesize, $defined_max_size ) ;

	function convertSize( $size )
	{
		if( $size < 1024) return $size.' Bytes';
		if( $size > 1024*1024) return round($size/(1024*1024),2).' MB';
	
		return round($size/1024, 2).' KB';
	}

	$data = array();
	$data['version'] = $GLOBALS['fc_config']['version'];
	$data['fileshare'] = $lang['usermenu']['fileshare'];
	$data['bodyText'] = htmlColor($GLOBALS['fc_config']['themes'][$GLOBALS['fc_config']['defaultTheme']]['bodyText']);
	$data['publicLogBackground'] = htmlColor($GLOBALS['fc_config']['themes'][$GLOBALS['fc_config']['defaultTheme']]['publicLogBackground']);
	$data['not_errmsg'] = ($errmsg != '');
	$data['errmsg'] = $errmsg;
	$data['win_choose'] = str_replace('MAX_SIZE', convertSize($maxSize) , $lang['dialog']['common']['win_choose']);
	$data['maxSize'] = $maxSize;
	$data['file_info_size'] = str_replace('MAX_SIZE', convertSize($maxSize) , $lang['dialog']['sharefile']['file_info_size']);
	
	$data['file_info_ext'] = '';
	if(trim($GLOBALS['fc_config']['filesharing']['allowFileExt']) != '')
    {
		$ext = explode(',', trim($GLOBALS['fc_config']['filesharing']['allowFileExt']) );
		$ext = strtoupper( implode(', ', $ext ) );
		$data['file_info_ext'] = str_replace('ALLOWED_EXT', $ext, $lang['dialog']['sharefile']['file_info_ext']);
	}
	
	$data['win_share_only'] = $lang['dialog']['sharefile']['win_share_only'];
	$data['touser'] = htmlSelect('touser_id', $users, $req['toid'], '');
	$data['win_upl_btn'] = $lang['dialog']['common']['win_upl_btn'];
	$data['req'] = $req;
	
	$data['pls_select_file'] = $lang['dialog']['common']['pls_select_file'];
	$data['allowFileExt'] = trim(strtoupper( $GLOBALS['fc_config']['filesharing']['allowFileExt']));
	$ext = explode(',', trim($GLOBALS['fc_config']['filesharing']['allowFileExt']) ); 
	$ext = strtoupper( implode(', ', $ext ) ); 
	$data['ext_not_allowed'] = str_replace('ALLOWED_EXT', $ext, $lang['dialog']['common']['ext_not_allowed']);
	
	$smarty->assign('data', $data);
	$smarty->display('sharefile.tpl');

?>

⌨️ 快捷键说明

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