PHP ile FTP dizinini görüntüleme
Son günlerde uğraşmış olduğum PHP ile FTP işlemleri belki birilerinin işine yarar ümidiyle paylaşmak istedim.
FTP'ye PHP ile bağlanmak için PHP'nin mevcut fonksiyonlarından ftp_connect kullanılmaktadır. ftp_connect fonksiyonunu bir çok yerde kullanılması nedeniyle global bir değişkene atamak daha mantıklıdır.
global $ftpcon;
$host = "localhost";
$ftpcon = ftp_connect($host) or die("Sunucuya bağlanılamadı.(".$host.")");
Bağlantı sağlandıktan sonra yapılması gereken iş şüphesiz login olmaktır. Yine PHP'de mevcut fonksiyon ftp_login imdadımıza yetişmektedir. ftp_login fonksiyonu true veya false bir bool değer döndermektedir.
$usr = 'ramazan';
$pass = 'ulucay';
if(ftp_login($ftpcon,$usr,$pass))
echo $usr.'@'.$host.' sunucusuna bağlanıldı.';
else
echo $usr.' kullanici adı ile bağlantı kurulamadı.';
Bir dizinde bulunan dosyaları göstermek için;
$contents = ftp_nlist($ftpcon, '.');
sort($contents);
foreach ($contents as $dosya) {
echo $dosya."<br>";
}
Yukardaki kodda $contects ile root dizini listelenmesi sağlanmaştır. sort komutu burada $contets arrayinde bulunan değişkenleri alfabetik olarak sıralamasını sağlamaktadır.
Sonuç olarak bir FTP'ye bağlanıp dosyaları listelemek için;
global $ftpcon;
$host = "localhost";
$usr = 'ramazan';
$pass = 'ulucay';
$ftpcon = ftp_connect($host) or die("Sunucuya bağlanılamadı.(".$host.")");
if(ftp_login($ftpcon,$usr,$pass))
{
$contents = ftp_nlist($ftpcon, '.');
sort($contents);
foreach ($contents as $dosya) {
echo $dosya."<br>";
}
}
else
echo $usr.' kullanici adı ile bağlantı kurulamadı.';
28 Mayıs 2010, 19:23
Çok güzel bir makale olmuş. Ellerine sağlık. Fakat benim sormak istediğim bir şey var. Dosyaları listelerken sadece adlarını görüntüleyebiliyoruz. Ben mesela listelediğim dosyaların boyutunu görmek istersem yada diyelim ana dizinin içerisindeki Berkan diye bir klasöre tıklayıp girmek istiyorsam nasıl bir yol izlemem gerekir. Şimdiden teşekkür ederim.
29 Mayıs 2010, 13:46
Berkan, ftp_size fonksiyonu ile istemiş olduğunu yapabilirsin. bunu dener misin? Ayrıca bir klasöre girmek için ftp_ chdir fonksiyonunu kullanabilirsin. ftp_ chdir fonksiyonu belirttiğin dizine gitmene sağlar ve klasöre tıklayınca ftp_ chdir ile o tıkladığın klasöre gidebilirsin.
global $ftpcon; $host = "localhost"; $usr = 'ramazan'; $pass = 'ulucay'; $ftpcon = ftp_connect($host) or die("Sunucuya bağlanılamadı.(".$host.")"); if(ftp_login($ftpcon,$usr,$pass)) { $contents = ftp_nlist($ftpcon, '.'); sort($contents); foreach ($contents as $dosya) { echo $dosya." - ".ftp_size($ftpcon, $dosya)."<br>"; } } else echo $usr.' kullanici adı ile bağlantı kurulamadı.';