현재 위치: > 최신 기사 목록> ftp_login + ftp_rawlist를 사용하여 FTP 파일 브라우저를 구현하십시오

ftp_login + ftp_rawlist를 사용하여 FTP 파일 브라우저를 구현하십시오

gitbox 2025-05-26

1. FTP 서버에 연결하고 로그인하십시오

먼저 ftp_connect를 사용하여 FTP 서버에 연결 한 다음 FTP_Login 기능에 로그인하십시오.

 <?php
// 연결하다 FTP 섬기는 사람
$ftp_server = "gitbox.net";
$conn_id = ftp_connect($ftp_server);

if (!$conn_id) {
    die("无法연결하다到 FTP 섬기는 사람 $ftp_server");
}

// 로그인하십시오
$ftp_user = "your_username";
$ftp_pass = "your_password";
if (!ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    die("FTP 로그인하십시오失败");
}

echo "成功연결하다并로그인하십시오到 $ftp_server\n";
?>

2. 디렉토리 목록을 가져옵니다

성공적으로 로그인 한 후 FTP_Rawlist를 사용하여 디렉토리에서 파일 및 폴더 정보를 얻습니다.

 <?php
// 현재 디렉토리 목록을 가져옵니다
$directory = "/";
$file_list = ftp_rawlist($conn_id, $directory);

if ($file_list === false) {
    die("디렉토리 목록을 얻을 수 없습니다");
}

// 출력 디렉토리 정보
foreach ($file_list as $file) {
    echo $file . "<br>";
}
?>

다음은 Linux LS -L 명령의 출력과 유사한 파일 세부 사항을 포함하는 배열입니다.


3. 디렉토리 목록을 구문 분석하십시오

더 쉽게 표시하기 위해서는 파일과 디렉토리를 구별하기 위해 FTP_Rawlist 가 반환 한 문자열을 구문 분석해야합니다.

 <?php
function parseFtpRawList($raw_list) {
    $items = [];
    foreach ($raw_list as $line) {
        $chunks = preg_split("/\s+/", $line, 9);
        if (count($chunks) === 9) {
            list($permissions, $number, $owner, $group, $size, $month, $day, $timeOrYear, $name) = $chunks;
            $items[] = [
                'permissions' => $permissions,
                'size' => $size,
                'name' => $name,
                'is_dir' => $permissions[0] === 'd',
                'raw' => $line,
            ];
        }
    }
    return $items;
}

$parsed_list = parseFtpRawList($file_list);
foreach ($parsed_list as $item) {
    echo ($item['is_dir'] ? "[DIR] " : "[FILE] ") . htmlspecialchars($item['name']) . "<br>";
}
?>

4. 간단한 브라우징 기능을 구현하십시오

사용자가 클릭 한 디렉토리 이름을 기반으로 경로를 전환하고 재귀 브라우징을 지원할 수 있습니다.

 <?php
// 통과하다 GET 현재 디렉토리를 얻는 매개 변수
$current_dir = isset($_GET['dir']) ? $_GET['dir'] : "/";

// 경로 교차 공격을 피하십시오
$current_dir = str_replace(["..", "//"], "", $current_dir);

$file_list = ftp_rawlist($conn_id, $current_dir);
$parsed_list = parseFtpRawList($file_list);

echo "<h2>목차: " . htmlspecialchars($current_dir) . "</h2>";
echo "<ul>";

// 上级목차链接
if ($current_dir !== "/") {
    $parent_dir = dirname($current_dir);
    if ($parent_dir == "\\") $parent_dir = "/";
    echo '<li><a href="?dir=' . urlencode($parent_dir) . '">[..]</a></li>';
}

foreach ($parsed_list as $item) {
    if ($item['is_dir']) {
        echo '<li>[DIR] <a href="?dir=' . urlencode(rtrim($current_dir, "/") . "/" . $item['name']) . '">' . htmlspecialchars($item['name']) . '</a></li>';
    } else {
        echo '<li>[FILE] ' . htmlspecialchars($item['name']) . '</li>';
    }
}
echo "</ul>";
?>

5. FTP를 분리하십시오

탐색 후 연결을 닫는 것을 잊지 마십시오.

 <?php
ftp_close($conn_id);
?>

요약

위의 단계를 통해 PHP를 기반으로 간단한 FTP 파일 브라우저를 작성합니다.

  • FTP 서버에 연결하고 로그인하십시오

  • FTP_RAWLIST를 사용하여 디렉토리 컨텐츠를 얻으십시오

  • 디렉토리와 파일을 분석하고 구별합니다

  • 디렉토리 스위칭 브라우징을 구현하십시오

파일 다운로드, 삭제, 업로드 등과 같은이 기준에 따라 기능을 더 확장 할 수 있습니다.이 기사는 PHP FTP 프로그래밍을 신속하게 시작하는 데 도움이되기를 바랍니다.