Autor Zpráva
Sylar
Profil
Zdravím,

potřeboval bych poradit s předvyplněním inputu pro upload souborů. Nastínim problém.
V administraci dovoluji uživatelům uploadnout ikonku k odkazu a formulář obsahuje i povinné položky. Při uploadu ikonky a nevyplnění některé povinné položky hodí form hlášku ale ikonka se uploadne (protože byla vyplněná v pořádku) . Problém nastane např. v případě, že uživatel náhle z formuláře odejde. ikonka je už uploadnutá na server ale není využita a vzniká bordel.

Napadlo mne zda nejde nějak udělat aby při vybrání ikonky pro upload se v inputu type="file" pouze předávala cesta v počítači ke zmíněné ikonce a uploadla by se až po úspěšném odeslání formuláře (o to bych se už postaral), jen nevím jak předávat tu cestu i ikonce aniž bych ji musel uploadnout nebo aby ji uživatel musel zadávat znova.

Jediná možnost mi napadla uploadnout ikonku do "dočasné" složky a po úspěšném odeslání formu ji přeuploadovat na své místo a dočasnou složku (třeba přes cron) pravidelně mazat ale přijde mi to až moc složité.

Určitě jste se s tímto problémem setkali mnozí také, jak řešíte podobné problémy s nepoužitými uploadnoutými soubory vy ?

předem díky za nápady/názory
baklazan
Profil *
input type="file" nejde predvyplnit z bezpecnostnych dovodov
temp
Profil *
Uploadovať ikonu do dočasného súboru a presúvanie do zložky až keď je formulár úspešne vyplnený je šdandardný spôsob akým sa upload súborov v PHP rieši: Odkaz
divadlo kokoko
Profil *
input type="file" vyplnit naštěstí nejde.
Možná to kdysi šlo na starších verzích IE s úrovní ochrany nastavenou na nejnižší hodnotě, ale obecně je to bráno jako bezpečnostní riziko.
Proč? Protože v PHP (stejně jako v jiných jazycích, včetně JavaScriptu) lze odeslat formulář metodou POST a tvůj skript, který zpracovává vstup, tak v podstatě donutit uploadovat jakýkoli soubor (a pokud by ho samotný skript odmítl tak minimálně do tempu). Problém není jen v tom, že by vznikal "bordel" (jak to nazýváš ty) ještě větší a nesrovnatelný s tím, co řešíš ty, nebo v zaplácávání diskového místa zbytečnými soubory, ale též v tom, že některé „zlé” skripty by byly (v závislosti na úrovni zabezpečení prohlížeče) schopny najít na lokálním disku klientova počítače důležité soubory a ty pak tímto způsobem posílat na „zlý” server, aniž by samotný uživatel měl kontrolu nad tím, že pošle pouze to, co on chce. Zkrátka, nejde to a je dobře, že to tak nejde.
Svůj problém vyřeš tak, že - pokud má uživatel povolen JavaScript (99 % případů) - tak pomocí něj zamez odeslání formuláře, pokud není všechno vyplněno, jak má; a *současně* měj tu samou kontrolu i na straně serveru (tj. nespoléhej se, že všechno vyřeší JavaScript!) a soubor zpracovávej až když všechny ostatní údaje jsou zadány správně. Je to standardní způsob a mnohem jednodušší než do toho tahat nějaký cron apod.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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