Autor Zpráva
Mr.Puschkin
Profil *
Zdravím Vás!

Chci se zeptat, zda-li jde nějak napsat scandir po síti?

<?php
$adresar=opendir("\\\127.0.0.1\test");
while($jmenosouboru = readdir($adresar)) {
echo "$jmenosouboru <br>";
}
closedir($adresar);
?>

Takhle to funguje ale jakmile zaměním IP adresu nebo jméno počítače localhostu na kteroukoliv jinou, vrací to chyby hned na opendiru.Podotýkám, že oprávnění na síťovou složku jsou OK.
Pokud opendir na jiný počítač v síti neuvidí(možná bezpečnostní vlastnost PHP), jde upravit <input type=\"file\" na něco jako <input type=\"dir\" abych si nevylistoval pouze jeden soubor ale celou složku?

Předem všem děkuji za rady
Joker
Profil
Mr.Puschkin
nikdy jsem to nezkoušel, ale...
Podotýkám, že oprávnění na síťovou složku jsou OK.
Teď je otázka- pro jakého uživatele? Není potřeba heslo? (Systém může mít heslo někde uložené a přihlašovat se automaticky)

jde upravit <input type=\"file\" na něco jako <input type=\"dir\" abych si nevylistoval pouze jeden soubor ale celou složku?
Ne (pokud vím).
Mr.Puschkin
Profil *
Na heslo bych to popravdě řečeno neviděl nebo mě alespoň nenapadá jaké heslo by to mohlo chtít.Jde mi hlavně o to, aby uživatel při vstupu na stránky viděl obsah svého C:.Měl by někdo nějaký nápad?
bohyn
Profil
Mr.Puschkin
Jde mi hlavně o to, aby uživatel při vstupu na stránky viděl obsah svého C:.
To kdyby fungovalo tak je veskera bezpecnost na internetu v cudu - Nejde to.
Joker
Profil
Jde mi hlavně o to, aby uživatel při vstupu na stránky viděl obsah svého C:
Ahá, takže jde o to automaticky načíst soubory z uživatelova C: do nějakého formuláře?
Poznámka mimo: Co když někdo vůbec nemá "C:", jako například já?

Ale hlavně: Prvky formuláře jdou samozřejmě skrýt přes kaskádové styly a formulář jde taky automaticky odeslat.
Takže, z hlediska uživatele a jeho bezpečnosti: považujete za rozumné, aby prohlížeč umožňoval automaticky do formuláře načítat soubory z disku?

Jinak jestli jde jen o zobrazení obsahu disku C: v prohlížeči, tak to jde- stačí do stránky vložit <iframe> s příslušnou adresou
bohyn
Profil
Joker
Jinak jestli jde jen o zobrazení obsahu disku C: v prohlížeči, tak to jde- stačí do stránky vložit <iframe> s příslušnou adresou
<iframe src="file://localhost/C:/"></iframe>

Bude fungovat jen pokud si uzivatel otevre stranku z disku ne ze serveru. Do iframe se da JavaScriptem dostat. Fungovat tedy nebude ze stejneho duvodu jako nejde pres JS vyplnovat input file.
Mr.Puschkin
Profil *
Joker
Určitě nechci nic automaticky odesílat nebo skrývat!Nastíním celou situaci:V rámci jedné vnitřní sítě a jedné domény jsem chtěl udělat nějaké prostředí určené pro zálohování dat uživatele na server.Takže nápad byl:Na místní stránky vnitřní sítě udělat jednu, kterou si uživatel otevře a uvidí co má na disku.Tam si zvolí, kterou složku(složky) chce zálohovat, proběhne kontrola výsledné velikosti a pokud požadovaná záloha menší než cca 20GB, pusť ho dál.
Ještě jednen postřeh:Když si namapuju jako jednotku Z: složku nebo disk na jiném počítači, scandir také nefunguje takže ani neopustí "jeden počítač".Je pravda, že by to procházení disku v případě zneužití mohla být velká bezpečnostní díra a z toho důvodu to nepůjde.
bohyn
Profil
Mr.Puschkin
Neni lepsi to udelat pres FTP a pro uzivatele nastavit kvoty (limit velikosti)? Kazdy pak bude moct pro pristup pouzivat klienta jaky mu bude vyhovovat a ty nebudes muset slozite vymyslet scripty. Nehlede na to ze upload 20 GB pres HTTP je docela sila.
Mr.Puschkin
Profil *
bohyn
Nehlede na to ze upload 20 GB pres HTTP je docela sila.
20GB by nešlo přes protokol http ale jak jsem již psal v rámci vnitřní místní sítě(přes RJ-45).
Jinak všem ještě jednou děkuji za rady, ten iframe je dobrý nápad a docela mi pomohl!
Joker
Profil
bohyn
Neni lepsi to udelat pres FTP a pro uzivatele nastavit kvoty (limit velikosti)?
...navíc bude fungovat drag&drop a takové věci a může se to chovat jako další disk počítače.

Mr.Puschkin
20GB by nešlo přes protokol http ale jak jsem již psal v rámci vnitřní místní sítě(přes RJ-45).
A v rámci vnitřní sítě ten intranet máte na jakém protokolu?
Mr.Puschkin
Profil *
Joker
A v rámci vnitřní sítě ten intranet máte na jakém protokolu?
Ten samozřejmě je na http ale 20GB dat bych nekopíroval přes něj ale pomocí generovaného bat souboru tzn. přes Windows share
Joker
Profil
Mr.Puschkin
Ještě mě napadá- jestli na intranetu jede IE, šla by na tohle napsat nějaká ActiveX komponenta.
bohyn
Profil
Mr.Puschkin
Trochu jsem zapatral v PHP manualu a nasel toto:
php at uchange dot co dot uk
05-Dec-2008 12:36
Having spent an hour or so trying to get a complete list of files from a network share on Windows, I've given up (Apache 2.2 Win32, WinXP, PHP5 -> Windows 2000 R2).

Trying to use a mapped drive letter gives me an error and trying to use the UNC path works but is dog slow (it takes a couple of minutes to open and readdir() a directory with a couple of hundred files).

Using this code is fast and instant (you'll have to chop up the output yourself but so be it!)

$out = `dir $dir /B /S`;

If you don't need recursive subdirectories remove the /S from the command - for more details run 'dir /?' on Windows.

Hope this helps somebody in a similar fix!


Tedy pouziti systemoveho volani dir

Edit: Jeste jsi precti prispevek o jeden vyse (1. a 2. od shora). Tam je vysvetleni proc ti to nefunguje
PHP manual - opendir

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: