filebox管理php,filebox.php
/**
* 程序說明
* @package FileBox
* @author Jooies
* @copyright Copyright (c) 2014-2016
* @since Version 1.8.1.2
*
* 設(shè)置說明
* $sitetitle - 標(biāo)題名稱
* $filefolder - 程序目錄
* $user - 用戶名
* $pass - 密碼
* $safe_num - 設(shè)置多少次后禁止登陸,為0則不限制,建議為3-5
* $mail - 若有惡意登錄,會(huì)發(fā)郵件到這個(gè)郵箱,前提是mail()函數(shù)可用!
*/
header('Content-Type: text/html; charset=utf-8');
date_default_timezone_set('Asia/Shanghai');
session_start();
error_reporting(1);
$filefolder = "./";
$sitetitle = $_SERVER['HTTP_HOST'];
$user = 'konica';//用戶名
$pass = 'dbfa3ff3e3785ac5cfd8b9f0e715e7e8';//加密后的密碼
$salt = 'www.iikira.com';//加密用鹽,請(qǐng)亂打
$enpassrmethod = md5(md5($salt).md5($_REQUEST['pass']));//加密密碼的方式,更換保留“$_REQUEST['pass']”
$encookie = substr(hash('sha512',hash('sha256',md5(md5($salt).md5($pass)))),34,76).substr(sha1(md5(md5($salt.$sitetitle.$user.$pass))),8,29);//加密cookie
$safe_num = 5;//設(shè)置多少次后禁止登陸,為0則不限制,建議為3-5
$mail = 'root@localhost';//若有惡意登錄,會(huì)發(fā)郵件到這個(gè)郵箱,前提是mail()函數(shù)可用!
$meurl = $_SERVER['PHP_SELF'];
$os = (DIRECTORY_SEPARATOR=='\\')?"windows":'linux';
$op = (isset($_REQUEST['op']))?$_REQUEST['op']:'home';
$action = (isset($_REQUEST['action']))?$_REQUEST['action']:'';
$folder = (isset($_REQUEST['folder']))?$_REQUEST['folder']:'./';
$arr = str_split($folder);
if($arr[count($arr)-1]!=='/')$folder .= '/';
while (preg_match('/\.\.\//',$folder)) $folder = preg_replace('/\.\.\//','/',$folder);
while (preg_match('/\/\//',$folder)) $folder = preg_replace('/\/\//','/',$folder);
if($folder == '')$folder = $filefolder;
$ufolder = $folder;
if($_SESSION['error'] > $safe_num && $safe_num !== 0)printerror('您已經(jīng)被限制登陸!');
/****************************************************************/
/* 用戶登錄函數(shù) */
/* */
/* 需要瀏覽器開啟Cookies才可使用 */
/****************************************************************/
ini_set("session.cookie_httponly", 1);
if ($_COOKIE['user'] != $user || $_COOKIE['pass'] != $encookie) {
if ($_REQUEST['user'] == $user && $enpassrmethod == $pass) {
setcookie('user',$user,time()+60*60*24*1);
setcookie('pass',$encookie,time()+60*60*24*1, NULL, NULL, NULL, TRUE);
}else{
if ($_REQUEST['user'] == $user || $_REQUEST['pass']) $er = true;
login($er);
exit;
}
}
/****************************************************************/
/* function maintop() */
/* */
/* 控制站點(diǎn)的樣式和頭部內(nèi)容 */
/* $title -> 頂部標(biāo)題 $showtop -> 是否顯示頭部菜單 */
/****************************************************************/
function maintop($title,$showtop = true) {
global $meurl,$sitetitle;
echo "\n\n\n
\n\n\n"."
$sitetitle - $title\n"."\n"
."
\n"."\n";
if($_REQUEST['op']!=='home')$back = "
返回 ".$_SESSION['folder']."\n";else $back = '';echo "
$sitetitle
\n";if ($showtop) {//頭部菜單內(nèi)容
echo "
\n- 主頁\n"
.$back
."
上傳文件\n"."
創(chuàng)建文件\n"."
MySQL備份\n"."
FTP備份\n"."
注銷\n"."
";}
echo "
\n";}
/****************************************************************/
/* function login() */
/* */
/* 登錄驗(yàn)證 $user and md5($pass) */
/* 需要瀏覽器支持Cookie */
/****************************************************************/
function login($er=false) {
global $meurl,$op,$safe_num,$mail;
setcookie("user","",time()-60*60*24*1);
setcookie("pass","",time()-60*60*24*1);
maintop("登錄",false);
if ($er) {
if (isset($_SESSION['error'])){
$_SESSION['error']++;
if($_SESSION['error'] > $safe_num && $safe_num !== 0){
mail($mail,'FileBox文件管理器提醒:文件被惡意登錄!','該提醒來自FileBox:
登錄者IP為:'.$_SERVER['REMOTE_ADDR'],'From: ');
echo ('ERROR: 您已經(jīng)被限制登陸!');
exit;
}
}else{
$_SESSION['error'] = 1;
}
echo "用戶名或密碼錯(cuò)誤!
\n";
}
echo "
\n"."\n"
."\n"
."\n"
."
\n";mainbottom();
}
/****************************************************************/
/* function home() */
/* */
/* Main function that displays contents of folders. */
/****************************************************************/
function home() {
global $os, $meurl ,$folder, $ufolder;
$content1 = "";
$content2 = "";
$folder = gCode($folder);
if(opendir($folder)){$style = opendir($folder);}else{printerror("目錄不存在!\n");exit;}
$a=1;
$b=1;
if($folder)$_SESSION['folder']=$ufolder;
maintop("主頁");
echo "
while($stylesheet = readdir($style)) {
$ufolder = $folder;
$sstylesheet = $stylesheet;
if($os!=='windows'):$qx = "
".substr(sprintf('%o',fileperms($ufolder.$sstylesheet)), -3)."";$xx='';else:$qx = '';$xx='';endif;if ($stylesheet !== "." && $stylesheet !== ".." ) {
$stylesheet = uCode($stylesheet);
$folder = uCode($folder);
$rename = "
重命名\n";if (is_dir(gCode($folder.$stylesheet)) && is_readable(gCode($folder.$stylesheet))) {
$content1[$a] = "
\n"."
{$stylesheet}\n"."
".Size(dirSize($folder.$stylesheet)).""."
打開\n".$rename
."
查看\n".$qx."
\n";$a++;
$folder = gCode($folder);
}elseif(!is_dir(gCode($folder.$stylesheet)) && is_readable(gCode($folder.$stylesheet))){
$arr = explode('.',$folder.$stylesheet);
$arr = end($arr);
if($arr == 'zip'){#判斷是否是zip文件
$content2[$b] = "
\n"."
{$stylesheet}\n"."
".Size(filesize($ufolder.$sstylesheet)).""."
\n".$rename
."
提取\n".$qx."
\n";}elseif($arr == 'gif'||$arr == 'jpg'||$arr == 'png'||$arr == 'bmp'||$arr == 'png5'||$arr == 'psd'||$arr == 'webp'||$arr == 'gz'||$arr == 'gzip'){
$content2[$b] = "
\n"."
{$stylesheet}\n"."
".Size(filesize($ufolder.$sstylesheet)).""."
\n".$rename
."
查看\n".$qx."
\n";}else{
$content2[$b] = "
\n"."
{$stylesheet}\n"."
".Size(filesize($ufolder.$sstylesheet)).""."
編輯\n".$rename
."
查看\n".$qx."
\n";}
$b++;
$folder = gCode($folder);
}
}
}
closedir($style);
$lu = explode('/', $_SESSION['folder']);
if($a != 1 and $b != 1){$content1[$a-1] = $content1[$a-1]."
".$xx."";}array_pop($lu);
$u = '';
echo '
';foreach ($lu as $v) {
$u = $u.$v.'/';
if($v=='.'){$v='主頁';}elseif($v==''){$v='根目錄';}
echo ''.$v.' ? ';
}
echo "文件\n"
."",$a-1," 個(gè)文件夾 ",$b-1," 個(gè)文件
"."
if($os!=='windows'):$qx = "
權(quán)限\n";else:$qx = '';endif;echo "
"."
var collid = document.getElementById('check')
var coll = document.getElementsByTagName('input')
if (collid.checked){
for(var i = 0; i < coll.length; i++)
coll[i].checked = true;
}else{
for(var i = 0; i < coll.length; i++)
coll[i].checked = false;
}}"
."
\n"."
文件名\n"."
大小\n"."
打開\n"."
重命名\n"."
查看\n".$qx
."
";if($_SESSION['folder']!="./" and $_SESSION['folder']!="/"){
$last = (substr($_SESSION['folder'],0,1)=='/')?explode('/', substr($_SESSION['folder'],1,-1)):explode('/', substr($_SESSION['folder'],2,-1));
$back = (substr($_SESSION['folder'],0,1)=='/')?'':substr($_SESSION['folder'],0,1);
array_pop($last);
foreach ($last as $value) {
$back = $back.'/'.$value;
}
if($os=='windows')$qx="";else $qx="
";echo "
上級(jí)目錄$xx";}
for ($a=1; $a
for ($b=1; $b
echo "
";mainbottom();
}
//獲得創(chuàng)建日期等
function gettime($filename)
{
return "修改時(shí)間:".date("Y-m-d H:i:s",filemtime($filename))."\n"."創(chuàng)建時(shí)間:".date("Y-m-d H:i:s",filectime($filename));
}
function uCode($text)
{
return mb_convert_encoding($text,'UTF-8','GBK');
}
function gCode($text)
{
return mb_convert_encoding($text,'GBK','UTF-8');
}
// 計(jì)算文件夾大小的函數(shù)
function dirSize($directoty){
$dir_size=0;
$times=0;
if($times<=2){
if($dir_handle=opendir($directoty))
{
while($filename=readdir($dir_handle)){
$subFile=$directoty.DIRECTORY_SEPARATOR.$filename;
if($filename=='.'||$filename=='..'){
continue;
}elseif (is_dir($subFile))
{
$times = $times + 1;
$dir_size+=dirSize($subFile);
}elseif (is_file($subFile)){
$dir_size+=filesize($subFile);
}
}
closedir($dir_handle);
}
}
return ($dir_size);
}
// 計(jì)算文件大小的函數(shù)
function Size($size) {
$sz = ' kMGTP';
$factor = floor((strlen($size) - 1) / 3);
return ($size>=1024)?sprintf("%.2f", $size / pow(1024, $factor)) . @$sz[$factor]:$size;
}
function curl_get_contents($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //設(shè)置訪問的url地址
//curl_setopt($ch,CURLOPT_HEADER,1); //是否顯示頭部信息
curl_setopt($ch, CURLOPT_TIMEOUT, 60); //設(shè)置超時(shí)
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); //跟蹤301
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回結(jié)果
$r = curl_exec($ch);
curl_close($ch);
return $r;
}
/****************************************************************/
/* function up() */
/* */
/* First step to Upload. */
/* User enters a file and the submits it to upload() */
/****************************************************************/
function up() {
global $meurl, $folder, $content;
maintop("上傳");
echo "
\n"."
本地上傳根據(jù)服務(wù)器的設(shè)置,最大可上傳".ini_get('upload_max_filesize')."的文件,且文件總數(shù)的最大值為".ini_get('max_file_uploads')."個(gè)\n"."\n";
echo $content
."
"."
解壓 "."刪除 "
."
\n"
.""
."
\n";echo "
遠(yuǎn)程下載遠(yuǎn)程下載是什么意思?遠(yuǎn)程下載是從其他服務(wù)器獲取文件并直接下載到當(dāng)前服務(wù)器的一種功能。
類似于SSH的Wget功能,免去我們下載再手動(dòng)上傳所浪費(fèi)的時(shí)間。"
."
"."
解壓 "."刪除
\n".""
."";
mainbottom();
}
/****************************************************************/
/* function yupload() */
/* */
/* Second step in wget file. */
/* Saves the file to the disk. */
/* Recieves $upfile from up() as the uploaded file. */
/****************************************************************/
function yupload($url, $folder, $unzip, $delzip) {
global $meurl;
if(empty($folder)){
$folder="./";
}
$nfolder = $folder;
$nurl = $url;
$url = gCode($url);
$folder = gCode($folder);
if($url!==""){
ignore_user_abort(true); // 要求離線也可下載
set_time_limit (24 * 60 * 60); // 設(shè)置超時(shí)時(shí)間
if (!file_exists($folder)){
mkdir($folder, 0755);
}
$newfname = $folder . basename($url); // 取得文件的名稱
if(function_exists('curl_init')){
$file = curl_get_contents($url);
file_put_contents($newfname,$file);
}else{
$file = fopen ($url, "rb"); // 遠(yuǎn)程下載文件,二進(jìn)制模式
if ($file) { // 如果下載成功
$newf = fopen ($newfname, "wb");
if ($newf) // 如果文件保存成功
while (!feof($file)) { // 判斷附件寫入是否完整
fwrite($newf, fread($file, 1024 * 8), 1024 * 8); // 沒有寫完就繼續(xù)
}
}
if ($file) {
fclose($file); // 關(guān)閉遠(yuǎn)程文件
}
if ($newf) {
fclose($newf); // 關(guān)閉本地文件
}
}
maintop("遠(yuǎn)程上傳");
echo "
文件 ".basename($url)." 上傳成功\n";$end = explode('.', basename($url));
if((end($end)=="zip") && isset($unzip) && $unzip == "checkbox"){
if(class_exists('ZipArchive')){
echo "您可以 訪問文件夾 或者 返回目錄 或者 繼續(xù)上傳\n";
echo "
";$zip = new ZipArchive();
if ($zip->open($folder.basename($url)) === TRUE) {
if($zip->extractTo($folder)){
for($i = 0; $i < $zip->numFiles; $i++) {
echo "Unzip:".$zip->getNameIndex($i)."\n";
}
$zip->close();
}else{
echo('Error:'.$nfolder.$ndename.'');
}
echo basename($nurl)." 已經(jīng)被解壓到 $nfolder\n";
if(isset($delzip) && $delzip == "checkbox"){
if(unlink($folder.basename($url))){
echo basename($url)." 刪除成功\n";
}else{
echo basename($url)." 刪除失敗\n";
}
}
}else{
echo('無法解壓文件:'.$nfolder.basename($nurl).'');
}
echo '
';}else{
echo('此服務(wù)器上的PHP不支持ZipArchive,無法解壓文件!
');}
}else{
echo "您可以 訪問文件夾 或者 編輯文件 或者 返回目錄 或者 繼續(xù)上傳\n
";總結(jié)
以上是生活随笔為你收集整理的filebox管理php,filebox.php的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计符合人需求层次模型的商业模式——揭密
- 下一篇: 图书销售系统 php,php文学小说销售