로그인 폼을 만들었으니 이제 목록을 만들어 보도록 하겠습니다.
디렉토리 함수에 대해 이해하고 있다면, FTP 제작은 그리 어렵지 않을 것이라 생각됩니다. Function 파일은 로그인 처리시 사용된 동일한 소스입니다. 앞으로 자주 사용되므로 함수로 만들도록 합니다. 파일 이름은 func.php입니다.
<?php
function ftp_conn(){
$data = array();
$data['time'] = 90;
$data['host'] = base64_decode($_SESSION['ftp_host']);
$data['id'] = base64_decode($_SESSION['ftp_id']);
$data['pass'] = base64_decode($_SESSION['ftp_pass']);
$data['port'] = base64_decode($_SESSION['ftp_port']);
$data['pasv'] = base64_decode($_SESSION['ftp_pasv']);
$data['ssl'] = base64_decode($_SESSION['ftp_ssl']);
$ftp_conn = false;
if ($data['ssl'] === "y") {
if(false === ($ftp_conn = @ftp_ssl_connect($data['host'], $data['port'], $data['time']))){
exit("보안 접속이 정상적이지 않습니다.");
}
} else if (false === ($ftp_conn = @ftp_connect($data['host'], $data['port'], $data['time']))) {
exit(" 접속이 정상적이지 않습니다.");
}
$ftp_id = false;
if(false === ($ftp_id = @ftp_login($ftp_conn,$data['id'], $data['pass']))) {
exit("FTP 로그인에 실패하였습니다.");
}
if($data['pasv']){
@ftp_pasv($ftp_conn, true);
}
if(is_resource($ftp_conn)){
return array($ftp_conn, $data['host']);
} else {
return null;
}
}
function attach($size) {
$sizes = array(" B", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
if ($size == 0) { return('n/a'); } else {
return (round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizes[$i]); }
}
?>
브라우저로 파일 목록을 보여주기 위해서는 list.php 파일이 필요합니다.
<?php
$data = array();
$data = &$_GET;
unset($_GET);
session_start();
include ("func.php");
if(null === (list($ftp, $host) = ftp_conn())){
exit("리소스 확보에 실패하였습니다.");
} else {
$local_server = "접속호스트: " . $host . "<br />\n";
}
if(!empty($data['dir'])){
if(false === @ftp_chdir($ftp,$data['dir'])){
exit("경로변경에 실패하였습니다.");
}
}
$data['pwd'] = ftp_pwd($ftp);
?>
<!DOCTYPE html>
<style>
td { font-size:12pt; color:
a { font-size:12pt; color:
</style>
<br />
<br />
<br />
<br />
<table>
<tr>
<td>
<?php echo $local_server;?>
</table>
<table>
<tr>
<td>
<a href='list.php'>Home</a>
<?php
$rtmp = explode('/',$data['pwd']);
$rcount = count($rtmp);
for($i=1; $i<$rcount; $i++){
if(strlen($rtmp[$i]) > 1){
$data['history'] .= "/".$rtmp[$i];
echo '> <a href=list.php?dir='.urlencode($data['history']).'>'.$rtmp[$i]."</a> ";
}
}
?>
</table>
<table width="550">
<tr height="1" bgcolor="#666666">
<td colspan="5">
<tr>
<td>No
<td>Name
<td>Perms
<td>Size
<td>Time
<tr height="1" bgcolor="#666666">
<td colspan="5">
<?
$data['item'] = ftp_rawlist($ftp,$data['dir']);
$fcount = count($data['item']);
for($i=0; $i<$fcount; $i++){
$item = split("[ ]+",$data['item'][$i],9);
if(($item[8] !== '.') && ($item[8] !== '..')) {
$data['type'] = substr($item[0],0,1);
$j = $i+1;
if($data['type'] === 'd') {
echo "
<tr>
<td>
" . $j . "
<td>
<a href='list.php?dir=" . $data['dir'] . "/" . urlencode($item[8]) . "'>/" . $item[8] . "</a>
<td>
" . $item[0] . "
<td>
" . attach($item[4]) . "
<td>
";
}
if($data['type'] === '-') {
echo "
<TR>
<TD>
" . $j . "
<TD>
" . $item[8] . "
<TD>
" . $item[0] . "
<TD>
" . attach($item[4]) . "
<TD>
" . date("y-m-d H:i:s.",ftp_mdtm($ftp,$item[8])) . "
";
}
}
}
ftp_quit($ftp);
?>
</table>