Open Source Web Development Tutorials - Dev Shed
実践PHP!FTPクライアントを実装する
(2009/02/12公開)
Listfiles(続き)
さて、覚えていますか、ファイル名は配列で返されるのでしたね?そこで、個別のファイルがリストアップされるように、配列を分解する必要があります。ここはforeachループの出番です。
foreach($a as $value){
ファイル名の代わりにディレクトリ名が返されることもありますから、両者を区別できなくてはなりません。以下のコードでは、返された名前にドット(.)が含まれるか否かを検証して、両者を区別しています。ファイル名には、実際のファイル名と拡張子を分離するために、必ずドットが含まれています。
if(strpos($value,'.') > 0){
$img='images/subpage.gif';
$open="";
ドットが含まれていない場合は、適切な画像とディレクトリ名を表示します。また、ユーザーがディレクトリにアクセスしたり、ディレクトリを開いてコンテンツを閲覧できるように、リンクを作成します。
}else{
$img='images/fb.gif';
$open='<a href="'.$_SERVER['PHP_SELF'].'?action=view&dirs='.$value.'"><img src="images/open.png" border="0">Open</a>';
}
残りのコード部分では、さらに3つのリンクを作成しています。これで、ユーザーがファイルをアップロード、ダウンロード、リストやディレクトリから削除できます。リストされた名前がディレクトリ名の場合は、1つのリンクだけを表示します。
echo '<tr class="block">';
if($open==""){
echo '<td><img src="'.$img.'" border="0">'.trim($value).'
</td>
<td><a href="'.$_SERVER['PHP_SELF'].'?action=upload&file='.$value.'"><img src="images/upload.bmp" border="0"></a>|<a href="'.$_SERVER['PHP_SELF'].'?action=download&file='.$value.'"><img src="images/download.png" border="0"></a>|<a href="'.$_SERVER['PHP_SELF'].'?action=delete&file='.$value.'"><img src="images/trash.png" border="0"></a>
</td>';
}else{
echo '<td><img src="'.$img.'" border="0">'.trim($value).'</td><td>
'.$open.'';
echo '</td>';
}
echo '</tr>';
}
その後、テーブルを閉じて、FTPサーバーへの接続を終了します。関数の実行結果は、以下の画像のとおりです。
結び
これで、このプロジェクトは終了です。ところで、面倒な事態が発生しないように、最後に2~3の注意点を指摘しておきましょう。まず、必ずFTPサーバーを起動した後、このFTPクライアントを実行してください。筆者が使用したパスワードとユーザー名は、「ftpconnect.php」という名前のファイルにあります。この方法で接続詳細を保存する場合は、必ず、ルートディレクトリ外に保存しましょう。
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.









