Mám skript, který má v určitém adresáři vymazat všechny soubory, ale ne podadresáře (složky). Dělám to pomocí FTP připojení, protože ty soubory nemají práva pro úpravy pomocí PHP. Koukal jsem do manuálu, ale nevšiml jsem si žádné funkce, která by zjišťovala, zda se jedná o normální soubor nebo adresář.
Nevíte někdo, jestli nějaká taková funkce je?
Díky!
Fórum › PHP
Jak zjistit (v PHP pomocí FTP funkcí) zda se jedná o adresář nebo soubor?
To MareX: asi potrebujes funkcie is_dir() a is_file()
is_dir() : http://sk2.php.net/manual/sk/function.is-dir.php
is_file() : http://sk2.php.net/manual/sk/function.is-file.php
Tyhle funkce znám, ale to nejsou FTP funkce. Dá se to nějak použít v přes ten FTP protokol?
Nakonec jsem to pomocí toho is_dir vyřešil, ale to samozřejmě funguje jen pokud přistupuju na FTP server, na kterém se nachází ten skript. Jenže když budu chtít smazat takhle soubory na úplně jiném FTP serveru, tak teda nevím.
<?php
session_start();
if (!$_SESSION["administrator"]) {
Header("Location: ./index.php");
exit;
}
include("./../cnts.php");
if ($ftp = @ftp_connect(FTP_SERVER)) {
if (@ftp_login($ftp, FTP_USER, FTP_PASS)) {
if (@ftp_chdir($ftp, FTP_WWWROOT."/".$_GET["category"]."/".$_GET["znacka"])) {
$soubory = ftp_nlist($ftp, $_GET["model"]);
foreach ($soubory as $s) {
if ($s != "." && $s != "..") {
if (is_dir("./../".$_GET["category"]."/".$_GET["znacka"]."/".$_GET["model"]."/$s")) {
$soubory1 = ftp_nlist($ftp, $_GET["model"]."/$s");
foreach ($soubory1 as $s1) {
if ($s != "." && $s != "..") {
@ftp_delete($ftp, $_GET["model"]."/$s/$s1");
}
}
@ftp_rmdir($ftp, $_GET["model"]."/$s");
} else {
@ftp_delete($ftp, $_GET["model"]."/$s");
}
}
}
@ftp_rmdir($ftp, $_GET["model"]);
ftp_close($ftp);
Header("Location: p_obytne_vozy.php?sl1=".$_GET["znacka"]);
exit;
}
}
}
?>
To Smokie: Soubory nemusi mít vždy nutně koncovku.
Z manulálu jsem vyčetl, že funkce ftp_nlist vrací seznam všech souborů v daném adresáři, takže tohle by mohla být jedna cesta. Nebo pokud seš masochista, tak můžeš využít funkce ftp_exec, přesměrovat ls -a do souboru a ten zpracovat, ale dělám si srandu, tohle nepoužívej. Jinak zdroj: http://cz.php.net/manual/cs/function.ftp-nlist.php.
Ještě doplním, přečíst si komentáře, vypadá to, že tam najdeš, co hledáš.
Neviem ako je na tom PHP s FTP fciami, ale FTP protokol ma príkaz LIST, ktorý vracia obsah adresára aj s parametrami. (Problém je že výstup môže byt v rôznych formátoch). Tak ak si nebudeš vedieť dať rady, tak sa to dá zmaknuť príkazmi fsocketopen, fget, fwrite...
EDIT: Jou, http://www.php.net/manual/function.ftp-rawlist.php
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Jak zjistit zda jde o složku či soubor c# — založil Michal Š.
Dá se poznat, zda byl soubor includovan nebo requirován? — založil Kobi
Java - string() - dotaz - program má zjistit, zda řetězec obsahuje z… — založil Asus1000
Jak zjistit zda je Thread vytvořen a spuštěn. — založil Borisek
FTP - soubor nebo složka? — založil Markaos
Moderátoři diskuze