လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> FTP_Login + ftp_Rawlist သုံး. FTP ဖိုင် browser ကိုအကောင်အထည်ဖော်ပါ

FTP_Login + ftp_Rawlist သုံး. FTP ဖိုင် browser ကိုအကောင်အထည်ဖော်ပါ

gitbox 2025-05-26

1 ။ ဆက်သွယ်ပါနှင့် FTP server သို့ဝင်ရောက်ပါ

ပထမ ဦး စွာ FTP server သို့ဆက်သွယ်မှုတစ်ခုတည်ဆောက်ရန် FTP_Connect ကို သုံးပါ, ပြီးနောက် ftp_login function ကိုရယူပါ။

 <?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 ကို directory in information ကိုရယူရန် FTP_RAWLIST ကို အသုံးပြုသည်။

 <?php
// လက်ရှိလမ်းညွှန်စာရင်းကိုရယူပါ
$directory = "/";
$file_list = ftp_rawlist($conn_id, $directory);

if ($file_list === false) {
    die("လမ်းညွှန်စာရင်းမရရှိနိုင်ပါ");
}

// output ကိုလမ်းညွှန်သတင်းအချက်အလက်
foreach ($file_list as $file) {
    echo $file . "<br>";
}
?>

ဤတွင် Linux LS -l command ၏ output နှင့်ဆင်တူသောဖိုင်မှတ်တမ်းများပါ 0 င်သော array တစ်ခုရှိသည်။


3 ။ လမ်းညွှန်စာရင်းကိုဆန့်ကျင်

ပြသရန်ပိုမိုလွယ်ကူစေရန်ဖိုင်များနှင့်လမ်းညွှန်များကိုခွဲခြားရန် FTP_RAWLIST မှပြန်လာသော string ကိုခွဲခြမ်းစိတ်ဖြာရန်လိုအပ်သည်။

 <?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 ။ ရိုးရှင်းသော browsing function ကိုအကောင်အထည်ဖော်ပါ

အသုံးပြုသူကလစ် နှိပ်. directory name ပေါ်တွင်အခြေခံသည့်လမ်းကြောင်းများကိုလုပ်ဆောင်နိုင်ပြီး recursive browsing ကိုထောက်ပံ့သည်။

 <?php
// သွား GET လက်ရှိလမ်းညွှန်ရရှိရန် parameters တွေကို
$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 disconnect

browsing ပြီးနောက် connection ကိုပိတ်ရန်မမေ့ပါနှင့်။

 <?php
ftp_close($conn_id);
?>

အကျဉ်းချုပ်

အထက်ပါအဆင့်များမှတဆင့် PHP ကို ​​အခြေခံ. ရိုးရိုး FTP ဖိုင် browser ကိုဖြည့်စွက်သည်။

  • Connect နှင့် FTP server သို့ဝင်ရောက်ပါ

  • Directory အကြောင်းအရာရရန် FTP_RAWLIST ကို သုံးပါ

  • ဖိုင်များကို directory များမှခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ခွဲခြားခြင်း

  • browsing directory switching ကိုအကောင်အထည်ဖော်ပါ

ဖိုင်ဒေါင်းလုပ်, ဖျက်ခြင်း, တင်ခြင်းစသည်တို့စသည့်ဤအခြေခံအပေါ် အခြေခံ. လုပ်ဆောင်ချက်များကိုထပ်မံချဲ့ထွင်နိုင်သည်။