現在終於到了我們的第三個文件,include.php 它為程式建立起一個使用者介面。
"include.php" 包含三個表單,一些PHP程式碼取得目前的目錄清單並將它們存入三個變數
$files (包括目前目錄下的檔案),
$ file_sizes (對應的檔案大小),
and $dirs (包含子目錄名)
第一個表單使用$dirs 產生一個下拉式目錄列表,對應於「action=CWD」。
第二個表單使用$files $file_sizes建立一個可用的檔案列表,每個檔案使用一個checkbox。這個表單的action對應到"action=Delete" and "action=Download"
第三個表單用來上傳一個檔案到FTP站點,如下:
--------- -------------------------------------------------- ---------------------
---------------------- -------------------------------------------------- --------
當PHP以這種方式接收到一個檔案名,一些變數就產生了,這些變數指定檔案的大小,一個臨時的檔案名稱以及檔案的類型,最初的檔案名存在$upfile_name,一旦上傳後檔案名稱便存入$upfile中(這個變數是由PHP自己建立的)
透過這些訊息,我們就可以建立以下的語句了:
------ -------------------------------------------------- ------------------------
ftp_put($result, $upfile_name, $upfile, FTP_BINARY);
------ -------------------------------------------------- ------------------------
以下是代碼列表:
--------------- -------------------------------------------------- ---------------
- -------------------------------------------------- -----------------------------
------------------ -------------------------------------------------- ------------
/*
------------------ -------------------------------------------------- ------------
DISCLAIMER:
This is use-at-your-own-risk code.
It is meant only for illustrative purposes and is not meant for production environments. No warranties of any kind are provided to the user.
You have been warned!
All code copyright Melonfire, 200 atfire. Visfireus .melonfire.com
------------------------------------------- -------------------------------------
*/
// function to connect to FTP server
function connect()
{
global $server, $username, $password;
$conn = ftp_connect($server);
ftp_login($conn,$server);
ftp_login($conn, $username, $password);
return $conn;
}
// main program begins
// check for valid form entries else print errorif (!$server
!$username
!$password)
{
echo "Form data incomplete!";
}
else
{
}
else
{
}
else
{
// connect
$result = connect();
// action: change directory
if ($action == "CWD")
{
// at initial stage $rdir does not exist
// so assume default directory
if (!$rdir)
{
$path = ".";
}
}
}
// get current location $cdir and add it to requested directory $rdir
else
{
$path = $cdir . "/" . $rdir;
}
> >// change to requested directoryftp_chdir($result, $path);}// action: delete file(s)else if ($action = = "Delete"){ftp_chdir($result, $cdir);// loop through selected files and deletefor ($x=0; $x
{ftp_delete($result, $cdir . "/" . $dfile[$x]);}}// action: download fileselse if ($action == "Download"){ftp_chdir($result, $cdir);// download selected files// IMPORTANT: you should specify a different download location here!!for ($x=0; $x{ftp_get($ result, $dfile[$x], $dfile[$x], FTP_BINARY);}}
// 操作:上傳檔案
else if ($action == "上傳")
{
ftp_chdir($result, $cdir);
/// put 文件
/*
更好的主意是使用
$res_code = ftp_put($result, $HTTP_POST_FILES["upfile"]["name"],
$HTTP_POST_FILES[ " upfile"]["tmp_name"], FTP_BINARY);
因為它提供了更高的安全性
*/
$res_code = ftp_put($result, $upfile_name, $upfile, FTP_BINARY);
//檢查狀態並顯示
if ($res_code == 1)
{
$status = "上傳成功!";
}
else
else
{
$status = "上傳錯誤!";
}
}
//建立檔案清單
$filelist = ftp_nlist($result, ". ");
//顯示介面
include("include.php");
//關閉連線
ftp_quit($result);
}
?>
- --- ----------------------------------------------- --- -----------------------------------
------------ ------ -------------------------------------------- ------ ------------
// 取得目前內容location
$here = ftp_pwd($result);
/*
因為ftp_size() 非常慢,特別是在處理
包含目錄中所有檔案的陣列時,
此部分對目前
目錄中的所有檔案執行ftp_size() 並建立三個陣列。
*/
// 檔案陣列
$files = Array() ;
// 目錄陣列
$dirs = Array();
// 檔案大小數組
$file_sizes = Array();
// counters
$file_list_counter = 0;
$dir_list_counter = 0;
$dir_list_counter = 0;
的每個元素是否為($x=0; $x{
if (ftp_size($result, $filelist[$x]) != -1)
{
// 建立陣列
$files[$file_list_counter] = $filelist[$x];
$file_sizes[$file_list_counter] = ftp_size($result, $list [$x]);
$file_list_counter ;
}
else
{
$dir_list[$dir_list_counter] = $filelist[$x];
$dir_list_counter> }
}
?>
您目前在
center>
可用目錄: