Autor | Zpráva | ||
---|---|---|---|
Sylar Profil |
#1 · Zasláno: 21. 1. 2010, 02:45:17
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 * |
#2 · Zasláno: 21. 1. 2010, 03:15:33
input type="file" nejde predvyplnit z bezpecnostnych dovodov
|
||
temp Profil * |
#3 · Zasláno: 21. 1. 2010, 16:45:21
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 * |
#4 · Zasláno: 22. 1. 2010, 23:09:51
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. |
||
Časová prodleva: 14 let
|
0