Jak zjistit (v PHP pomocí FTP funkcí) zda se jedná o adresář nebo soubor? – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak zjistit (v PHP pomocí FTP funkcí) zda se jedná o adresář nebo soubor? – PHP – Fórum – Programujte.comJak zjistit (v PHP pomocí FTP funkcí) zda se jedná o adresář nebo soubor? – PHP – Fórum – Programujte.com

 

Marek Štafl0
Stálý člen
11. 2. 2007   #1
-
0
-

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!

Nahlásit jako SPAM
IP: ...–
Milan0
Stálý člen
11. 2. 2007   #2
-
0
-
Nahlásit jako SPAM
IP: ...–
www.milankohut.com
Marek Štafl0
Stálý člen
11. 2. 2007   #3
-
0
-

Tyhle funkce znám, ale to nejsou FTP funkce. Dá se to nějak použít v přes ten FTP protokol?

Nahlásit jako SPAM
IP: ...–
Milan0
Stálý člen
11. 2. 2007   #4
-
0
-

To MareX: no tom som si az neskor vsimol:) s FTP som nepracoval takze to ti neviem povedat...

Nahlásit jako SPAM
IP: ...–
www.milankohut.com
Marek Štafl0
Stálý člen
11. 2. 2007   #5
-
0
-

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;
}
}
}
?>

Nahlásit jako SPAM
IP: ...–
Smokie
~ Anonymní uživatel
591 příspěvků
12. 9. 2007   #6
-
0
-

A nevies cez regularne vyrazy zistit ci ten subor ma koncovku, alebo nema? Len mi to tak napadlo :)

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
12. 9. 2007   #7
-
0
-

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áš.

Nahlásit jako SPAM
IP: ...–
Prog.0
Věrný člen
13. 9. 2007   #8
-
0
-

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

Nahlásit jako SPAM
IP: ...–
Prog.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 36 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý