ここでようやく、プログラムのユーザー インターフェイスを設定する 3 番目のファイル include.php に到達します。
"include.php" には 3 つのフォームが含まれており、現在のディレクトリ リストを取得して 3 つの変数
$files (現在のディレクトリ内のファイルを含む)、
$ file_sizes (対応するファイル サイズ)、
、および $dirs (サブディレクトリ名を含む)
最初の形式では、$dirs を使用して、「action=CWD」に対応するドロップダウン ディレクトリ リストを生成します。
2 番目の形式では、$files $file_sizes を使用して利用可能なファイルのリストを作成し、各ファイルはチェックボックスを使用します。このフォームのアクションは、「action=Delete」と「action=Download」に対応します
3 番目のフォームは、次のように FTP サイトにファイルをアップロードするために使用されます:
------ --- --------------------------------------------------- --- ---------------------
---------------- -------------------------------------------------- -- -----------
PHP がこの方法でファイル名を受け取ると、ファイルのサイズ、一時ファイル名、およびファイルの種類を指定する多数の変数が生成されます。ファイル名は $upfile_name に存在します。アップロードされると、ファイル名は $upfile に保存されます (この変数は PHP 自体によって作成されます)
この情報を使用して、次のステートメントを作成できます:
--- --- ---------------------------------------------- --- -----------------------
ftp_put($result, $upfile_name, $upfile, FTP_BINARY);
--- ---- ------------------------------------------------ ---- ------------------------
以下はコードリストです:
------ ------ -------------------------------------------- ------ ------------------
----- -------------------------------------------- ------ ------------------------
--------------- ----------- -------------------------------------- ----------- --------
/*
--- ---------- -------------------------------------- ---------- ----------------
免責事項:
これは自己責任で使用するコードです。
これは説明のみを目的としており、運用環境向けではありません。ユーザーにはいかなる種類の保証も提供されません。
警告されました!
すべてコードの著作権は Melonfire、2000 にあります。 http://www.melonfire.com
にアクセスしてください。---------------------------- ------------------------ -------------------------------------------- ---
*/
// FTP サーバーに接続する関数
function connect()
{
global $server, $username, $password;
$ conn = ftp_connect($server);
ftp_login ($conn, $username, $password);
return $conn;
}
// メインプログラムが開始します
// 有効なフォームエントリをチェックする else print error
if (!$server
!$username
!$password)
{
echo "フォームデータが不完全!";
}
else
{
// connect
$result = connect();
// アクション: ディレクトリを変更
if ($action == "CWD")
{
// 初期段階では $rdir が存在しません
// したがって、デフォルトのディレクトリであると仮定します
if (!$rdir)
{
$path = ".";
}
// 現在の場所 $cdir を取得し、要求されたディレクトリ $rdir
else
{
$path = $cdir に追加します。 "/" . $rdir;
}
// 要求されたディレクトリに変更します
ftp_chdir($result, $path);
}
// action: ファイルを削除します
else if ($action == "Delete")
{
ftp_chdir($result, $cdir);
// ループスルー選択したファイルと削除
for ($x= 0; $x
{
ftp_delete($result, $cdir . "/" . $dfile[$x ]);
}
}
// アクション: ファイルをダウンロード
else if ($action == "ダウンロード")
{
ftp_chdir($ result, $cdir);
// 選択したファイルをダウンロードします
// 重要: ここで別のダウンロード場所を指定する必要があります!!
for ($x=0; $x{
ftp_get($result, $dfile[$x], $dfile[$x], FTP_BINARY);
}
}
// アクション: ファイルをアップロードします
else if ($action == "アップロード")
{
ftp_chdir($result, $cdir);
// put file
/*
を使用することをお勧めします
$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
{
$status = "アップロードエラー!";
}
}
// ファイルリストを作成
$filelist = ftp_nlist($result, ".");
// および表示インターフェイス
include("include.php");
// 接続を閉じる
ftp_quit($result);
}
?>
- -------------------------------------------------- ------------------------
--------------- -------------------------------------------------- ------------
// 最新の情報を取得location
$here = ftp_pwd($result);
/*
ftp_size() は、特にディレクトリ内のすべてのファイルを含む配列を操作する場合
非常に遅いため、
このセクションは、現在の
ディレクトリ内のすべてのファイルに対して ftp_size() を実行し、3 つの配列を作成します。
*/
// ファイルの配列
$files = Array() ;
// ディレクトリの配列
$dirs = Array();
// ファイル サイズの配列
$file_sizes = Array();
// カウンター
$file_list_counter = 0;
$dir_list_counter = 0;
// $filelist
の各要素をチェックします ($x=0; $x{
if (ftp_size($result, $filelist[$x]) != -1)
{
// 配列を作成します
$files[$file_list_counter] = $filelist[$x];
$file_sizes[$file_list_counter] = ftp_size($result, $filelist[$x]);
$file_list_counter ;
}
else
{
$dir_list[$dir_list_counter] = $filelist[$x];
$dir_list_counter ;
}
}
?>
現在 < で働いていますか? $here をエコーします。 ?>
$ステータスをエコー; ?>
利用可能なディレクトリ:
ファイル アップロード: