Starší komentáře ke článku: Jednoduchý upload souboru na server pomocí PHP

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Franta

Datum vložení: 17.8.2001 10:24:03

Vo funkcii mail je potrebné zadávať atribút From?

Vďaka

Avatar

Autor komentáře: Jaromír Skřivan

Datum vložení: 17.8.2001 11:59:07

nutné to není. Odesilatel je definován v souboru php.ini (direktiva sendmail_from). From ve funkci mail použijete v případě, že chcete, aby v hlavičce dopisu se uživateli zobrazilo jiné from, než je to skutečné.

Jarek Skrivan

Avatar

Autor komentáře: JS

Datum vložení: 17.8.2001 14:02:49

zdravim vas,
myslim,ze prilisna jednoduchost takovychto skriptu zverejnovanych na serveru interval.cz vede k neopatrnosti programatoru neznalych bezpecneho programovani

vytvorim-li:
<FORM ACTION="upload.php" METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE="HIDDEN" NAME="soubor_name" VALUE="passwd">
<INPUT TYPE="HIDDEN" NAME="soubor" VALUE="/etc/passwd">
<INPUT TYPE="submit" NAME="akce" VALUE="Upload">
</form>

a pote odeslu, s nejvetsi pravdepodobnosti ziskam v data/passwd soubor /etc/passwd se serveru. dane tim, ze vas jednoduchy skript vubec neosetruje vstup uzivatele, nejvetsi to problem, ktery je vzdy s php/perl/... skripty.

musite vzdy pouzit napr. funkci is_uploaded_file() (v PHP4), v PHP3 je v manualu tato funkce popsana, na vlastni naprogramovani...

prosim vas proto, abyste svuj clanek dostatecne upravil kvuli osetreni vstupu a vychove ctenaru k bezpecnemu programovani...

Avatar

Autor komentáře: Jaromír Skřivan

Datum vložení: 17.8.2001 14:10:19

Dobrý den,

ve svých článcích, zejména kvůli přehlednosti, neuvádím ošetření uživatelských vstupů a chyb. To nechávám na každém čtenáři.

Jinak na téma bezpečného programování skriptů jsem napsal článek "Ochrana dat - psaní bezpečných CGI skriptů", který na Intervalu vyšel v loňském roce a čtenáři Intervalu si jej mohou kdykoliv přečíst.

Jarek Skřivan

Avatar

Autor komentáře: JS

Datum vložení: 17.8.2001 14:23:16

muzete mi prozradit, kolik ctenaru po precteni tohoto clanku vas skript upravuje na osetreni uzivatelskeho vstupu, pokud jsou tak uvedomeli, nebo hned pote ctou vas clanek o osetreni vstupu?<BR>
pokud si nekteri ctenari preji clanek o uploadu souboru na server, pravdepodobne maji takove minimum znalosti, ze jsou sotva schopni tento skript vzit a rozchodit na svem serveru.

myslim, ze by bylo vhodne vzdy alespon podotknout, jaka rizika takovyto skript skyta, o nic prece nejde, tri radky textu navic, ci jeden radek kodu navic

Jakub Suchy

Avatar

Autor komentáře: Jaromír Skřivan

Datum vložení: 17.8.2001 14:32:27

Uvedený skript upravím a v nejbližší době bude k dispozici.

Jarek Skřivan

Avatar

Autor komentáře: 48764654

Datum vložení: 21.8.2001 19:58:34

Myslim, ze by bolo vhodnejsie pisat bezpecne priklady, pred casom som na clanok podobny tomuto doplatil nielen ja, ale aj nemenovana sluzba niekolko mesacnou odstavkou. Nikto uceny z neba nespadol... a odkial sa "php neznali" maju naucit pisat bezpecne skripty... Aj taka drobnost ako zmena pripony vela zmeni...

Avatar

Autor komentáře: Robo

Datum vložení: 18.8.2001 16:56:18

Zaujimalo by ma, ci sa daju uploadnut aj 2 a viac suborov naraz?

Forma by vypadalo asi takto:

<FORM ACTION="upload.php" METHOD="post" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="soubor" SIZE="30">
<INPUT TYPE="file" NAME="soubor2" SIZE="30">
<INPUT TYPE="submit" NAME="akce" VALUE="Upload">
</FORM>

Avatar

Autor komentáře: Jaromír Skřivan

Datum vložení: 20.8.2001 11:49:47

ano, jde, je to analogické:

v kódu skriptu máte první soubor přístupný přes proměnné $soubor1, $soubor1_name, atd., druhý soubor $soubor2, $soubor2_name, atd.
Provedete 2x testy a provedete 2x copy, jednou zkopírujete první soubor, pak ten druhý.

Jarek Skřivan

Avatar

Autor komentáře: Jiří Procházka

Datum vložení: 3.9.2001 10:14:44

open_basedir restriction in effect. File is in wrong directory

Avatar

Autor komentáře: Petr Kotala

Datum vložení: 4.9.2001 11:10:34

Zdravim,
resil jsem stejny problem (na Czechii), reseni je vytvorit si v korenovem adresari adresar /tmp/,protoze do sveho tmp ti (PHP) zapisovat nedovoli

Petr Kotala
icq:114702906

Avatar

Autor komentáře: Jiri Nemec

Datum vložení: 2.7.2002 21:49:36

Doporucuji prostudovat tyto URL adresy:

1 - <a href='http://www.php.net/manual/en/function.is-uploaded-file.php' target='_blank'>http://www.php.net/manual/en/function.is-uploaded-file.php</a>
2 - <a href='http://www.php.net/manual/en/function.move-uploaded-file.php' target='_blank'>http://www.php.net/manual/en/function.move-uploaded-file.php</a>

Avatar

Autor komentáře: ivan bares

Datum vložení: 4.10.2001 14:34:19

skript mi nejde stahnout, kdyz kliknu, na odkaz -zde-, otevre se skript, zazipujte ho prosim a dejte na stranky jako download.

Avatar

Autor komentáře: Stanislav Vacek

Datum vložení: 10.10.2001 9:10:15

Dobrý den,
nevím proč, ale zmíněný skript se již 2.den snažím marně rozchodit. Žádna hláška o úspěchu či neúspěchu se mi neojevila. Pokoušel jsem se krokovat program pomocí hlášení a podařilo se mi zjistit, že chyba bude pravděpodobně v proměnné soubor. Za žádnou cenu se mi do této proměnné nadaří uložit nějakou hodnotu. Ostatní proměnné fungují naprosto bez problémů. Nevíte, co by mohlo tuto chybu způsobovat ? Děkuji

Avatar

Autor komentáře: Kamil Možíš

Datum vložení: 11.6.2002 7:21:32

Toto mi odpověděl administrátor SkyNetu, kde máme zřízený webhosting a doménu, když jsem mu napsal, že upload souboru ani ftp PHP klient mi nefungují:

"Tento problem souvisi s tzv. "Safe Modem" ve kterem php na
nasem serveru bezi. Hlavni zmenou oproti normalnimu stavu
kdy muzete pomoci php delat se systemem temer cokoli je
prave toto omezeni kdy nemuzete pracovat se soubory ani
prostredim mimo "HomeDirectory" (domaci adresar - root)
Vaseho webhostingu. Z tohoto duvodu nemuzete pouzivat ani
proste funkce typu "copy" jez pracuji se systemovym /tmp
adresarem. Problem neni neresitelny, je nutne jen zmenit
zpusob jakym se prenos souboru bude dit. Vice najdete
v manualu ci na internetu pod hesly "PHP4, safe mode"
apod. Existuji primo funkce php jak v safe modu pracovat
se soubory a jsou celkem jednoduche."

Jelikož jsem v PHP úplný začátečník, nevím, včem ty jednoduché funkce spočívají a jak by vypadal upravný skript. Můžete to prosím popsat? Uvedený ftp PHP klient by mi moc ulehčil práci.

Děkuji mnohokrát.

Avatar

Autor komentáře: Stenlycup

Datum vložení: 22.4.2004 14:52:32

Zdravim,
mam uplne stejny problem. Upload nebo proste sprava souboru pres php. Todle je pekny <a href='http://szewo.com/php/commander/eng/' target='_blank'>http://szewo.com/php/commander/eng/</a>.

Bylo to nejak vyreseno?
Díky
S.

Avatar

Autor komentáře: mickey

Datum vložení: 5.11.2005 10:27:52

No to PHP zase tak jednoduchý nebude jak se zdá. Prý mám použít kontrukci pro převod proměnné: $promenna = $_POST['promenna']; ale ani to mi nepomohlo: Error: failed to copy file... v kořenovém adresáři jsem si udělal adresář TMP

Avatar

Autor komentáře: Standa Vacek

Datum vložení: 30.8.2002 13:42:40

Zkousel jsem uvedeny script na nekolika serverech, ale na vsech se mi vraci hlaska Permission Denied o nedostatecnych pravech. Da se to nejak obejit ? Klasicky FTP pristup na tyto servery mam.

Avatar

Autor komentáře: Gmvasek

Datum vložení: 2.3.2006 18:00:31

CHMOD

Avatar

Autor komentáře: Faust

Datum vložení: 9.11.2002 9:48:24

Stále mi to hází "open_basedir restriction in effect. File is in wrong directory" a ani tmp adresář v rootu, jak zde někdo radil, nepomáhá:-((

Avatar

Autor komentáře: Firen the Phoenix

Datum vložení: 30.3.2004 19:38:59

Hodilo by se mi, kdybyste uverejnili nejaky skript o nacitani souboru z databaze - nemuzu zkloubit, aby mi to nacetlo i obrazek i popisny text na jedne strance. dik

Avatar

Autor komentáře: Firen the Phoenix

Datum vložení: 16.5.2005 19:36:31

Máš tam chybu, očekuj rovnítka if...== a ne =

Avatar

Autor komentáře: Petr

Datum vložení: 6.1.2006 12:00:06

potrebuju nutne a co nejdřív help, samostatný upload funguje, ale pokud nevyberu soubor, nebo pokud přesáhne 1MB, neodešle se ani hidden proměnná. <? if(is_uploaded_file($HTTP_POST_FILES["soubor"]["tmp_name"])) { echo "soubor byl uploadován a promenna je: ".$promenna; } else echo "nebyl uploadovan a promenna je: ".$promenna; ?> <FORM ACTION="" METHOD="POST" ENCTYPE="multipart/form-data"> <INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="1048576"> <INPUT TYPE="FILE" NAME="soubor"> <INPUT TYPE="SUBMIT" VALUE="Poslati"> <INPUT TYPE="hidden" name="promenna" VALUE="nejaka hodnota"> </FORM>

Avatar

Autor komentáře: Adam

Datum vložení: 3.6.2006 19:49:16

mě to píše nějakou chybu na řádku 25 ale tam nic nemám

Avatar

Autor komentáře: Adam

Datum vložení: 3.6.2006 20:31:59

Píše to: Warning: copy(): open_basedir restriction in effect. File(/tmp/phpshF58A) is not within the allowed path(s): (/httpd/html/naturistacz:/httpd/html/tmp) in /httpd/html/naturistacz/www/upload/upload.php on line 11

Avatar

Autor komentáře: Kinslayer

Datum vložení: 12.12.2006 10:34:12

upload: if ($_FILES["soubor"]["type"] == "text/plain" or $_FILES["soubor"]["type"]="text/html") { if (copy ($_FILES["soubor"]["tmp_name"], "xml/".$_FILES["soubor"]["name"])) { // upload proveden uspesne } else { // nejaka chybova hlaska } } else { // nejaka chybova hlaska }

Avatar

Autor komentáře: anonim

Datum vložení: 9.1.2007 19:38:15

Jak to opravit?? Warning: copy(data/KNIGHT.JPG) [function.copy.php]: failed to open stream: Permission denied in /home/free/ic.cz/h/hsvet-java/root/www/upload.php on line 11

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 9.1.2007 21:20:02

S velkou pravděpodobností se pokoušíte použít funkci [b]copy[/b] (http://www.php.net/manual/en/function.copy.php) pro přesun souboru nahraného na server prostřednictvím webového rozhraní. Běží-li PHP v "bezpečném módu" ("safe mode", viz http://www.php.net/manual/en/features.safe-mode.php), pak je tato funkce značně omezena. Musíte použít jinou funkci, například [b]move_uploaded_file[/b] (http://www.php.net/manual/en/function.move-uploaded-file.php ;-)

Avatar

Autor komentáře: anonim

Datum vložení: 10.1.2007 18:30:49

Diky moc!!

Avatar

Autor komentáře: anonim

Datum vložení: 21.1.2007 12:39:29

Nevíte,jak to udělat,aby se tam neoběvovala tato chyba????: Warning: move_uploaded_file(): Unable to access soubory/45b350651c6b5/f_v.bmp in /3w/webz.cz/u/upload/upload.php on line 45

Avatar

Autor komentáře: Mireczech

Datum vložení: 31.1.2007 20:16:15

Zkontroluj si prava adresaru.

Avatar

Autor komentáře: jakub klecka

Datum vložení: 3.2.2007 20:15:44

no jo kazdej rika prava adresaru a kde to zaridim jak je nastavim?

Avatar

Autor komentáře: Michalsoft

Datum vložení: 31.7.2008 18:45:02

Třeba v Total commanderu: Soubor-Změna atributů a tam si nastav 777

Avatar

Autor komentáře: Jirka

Datum vložení: 5.4.2007 12:04:45

[b]Tohle mi to pořád píše:[/b] [i]Warning: copy(data/OldSmilies.zip) [function.copy.php]: failed to open stream: Permission denied in /home/free/ezin.cz/b/bulanci/root/www/upload.php on line 10 Při nahrávání souboru došlo k chybě![/i] Co s tím mám dělat?

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 5.4.2007 12:14:57

Možná by stačilo naučit se trochu číst, viz http://www.php.net/manual/en/features.safe-mode.php.

Avatar

Autor komentáře: Sibalek

Datum vložení: 12.4.2007 10:58:54

Potřeboval bych radu, jak nakopírovat soubor, u nějž znám jméno, cestu, na server (tudíž obejít všude zmiňované upload formuláře)...Je to možné v PHP nějak efektivně vyřešit? Za jakoukoliv radu předem děkuji. Sibalek

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 12.4.2007 11:33:22

Kopírovat soubor z lokálního PC na server bez účasti uživatele - jinými slovy "obejít všude zmiňované upload formuláře" - možné není, a to z bezpečnostních důvodů. Jak by se vám třeba líbilo, kdyby vám náhodně otevřená stránka vysosala soubor s hesly a vybílila konta celé rodiny? ;-)

Avatar

Autor komentáře: Sibalek

Datum vložení: 12.4.2007 11:58:27

:-) Jasné, rozumím... V mé aplikaci potřebuji dostat nově vytvořený soubor z tempu na server,aniž by byl do tohoto procesu zatažen uživatel... Pro upřesnění : uživatel vybere soubor, který je JavaApplety "nějak" zpracován a modifikovaný uložen do tempu..A já ho jakkoliv potřebuji z toho tempu uložit na server...A nechci se smířit s myšlenkou, že to nejde....:-)

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 12.4.2007 12:26:51

Pokud už se souborem pracujete pomocí Java Appletu, proč do věci míchat PHP, které tohle opravdu neumí? Zkuste, jestli by to nemohl udělat ten Java Applet sám nebo, v nejhorším, JavaScript prostřednictvím Ajaxu (tedy objektu XMLHttpRequest ;-)

Avatar

Autor komentáře: Franta

Datum vložení: 26.6.2008 14:46:00

Jedině si na svém počítači rozeběhnout PHP a např. z příkazové řády (resp. SHELLu) spustit. Tak otevřete libovolný soubor (lokální na svém počítači) a také ho můžete zkopírovat na server.

Avatar

Autor komentáře: Martin

Datum vložení: 29.4.2007 8:43:53

mam otazku, rekneme, ze obrazek mame na serveru a ze mame sckript ktery generuje stranku s obrazky, ale chci to umoznit jen tomu, kdo je prihlasen na mych strankach, tj. aby nemohl nekdo zadat primou cestu k obrazku a tim si ho zobrazit i kdyz na to nema pravo, muzete mi nekdo poradit, jestli to funguje a jak to pripadne nastavit? dekuji

Avatar

Autor komentáře: Pavel

Datum vložení: 10.6.2007 21:54:00

čím to je, že se nic nestane, když dám upload souboru, žádná hláška, nic

Avatar

Autor komentáře: pepe

Datum vložení: 15.6.2007 15:00:15

možná proto, že tam chceš nahrát jinej typ souboru, než textovej...

Avatar

Autor komentáře: RIchie

Datum vložení: 8.10.2007 12:39:15

Mohl by mi nekdo prosim nejak polopate napsat presny popis jak to mam udelat?...na svem webovem prostoru mam adresar upload a v nem ten upload-html a upload php .....ma se v tech souborech krome mailu neco menit....jsem fakt lama a nevim co s tim... pripadne mi napiste na icq 121318796 Diky moc...

Avatar

Autor komentáře: Sage

Datum vložení: 14.11.2007 20:33:41

Preco mi nejak nezerie premenne $subor_name a $subor_size? Inak podla moznosti by ste mi to mohli nejak vysvetlit na ICQ (366760279) alebo mailom

Avatar

Autor komentáře: Sage

Datum vložení: 14.11.2007 20:37:58

Uz nic... som si len nevsimol ze som napisal multipart/from-data namiesto multipart/form-data :)

Avatar

Autor komentáře: Peterek

Datum vložení: 22.3.2008 15:48:51

Ahoj mě to vždi napíše Warning: move_uploaded_file(./upload.php) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/free/ic.cz/p/peterek/root/www/upload.php on line 8 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpqlTyNy' to './upload.php' in /home/free/ic.cz/p/peterek/root/www/upload.php on line 8 Chyba - soubor nebyl nahran Co stím????

Avatar

Autor komentáře: Peterek

Datum vložení: 22.3.2008 18:24:53

Warning: move_uploaded_file(/home/free/ic.cz/p/peterek/root/www/upload/upload/321166267.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/free/ic.cz/p/peterek/root/www/upload/upload.php on line 28 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpR8L8jx' to '/home/free/ic.cz/p/peterek/root/www/upload/upload/321166267.jpg' in /home/free/ic.cz/p/peterek/root/www/upload/upload.php on line 28 Error: A problem occurred during file upload!

Avatar

Autor komentáře: Izzi

Datum vložení: 28.3.2008 11:54:35

Necital som cele prispevky v diskusii na tento clanok ale dost ludom to neslo, pravdepodobne neprepisali prava na adresar data. Ja som dal kazdemu write a potom to slo. To je len taky dotaz k vasemu clanku... Inac dakujem, mne pomohol.

Avatar

Autor komentáře: dejl

Datum vložení: 23.4.2008 16:31:29

Píše mi to tuto chybu nevíte co stím? díky moc Warning: copy() has been disabled for security reasons

Avatar

Autor komentáře: nerveless.one

Datum vložení: 25.4.2008 23:04:57

Funkci copy() tvůj webhoster zakázal. Dnes už se používá move_uploaded_file().

Avatar

Autor komentáře: Mephi

Datum vložení: 2.1.2009 9:39:13

Undefined variable: soubor_type in c:\program files\easyphp1-8\www\sotweb\data\upload.php on line 11 Notice: Undefined variable: soubor in c:\program files\easyphp1-8\www\sotweb\data\upload.php on line 12 Notice: Undefined variable: soubor_name in c:\program files\easyphp1-8\www\sotweb\data\upload.php on line 12 Při nahrávání souboru došlo k chybě! nechapu vsechny promeny sou nedefinovany ??? jen sem zkopiroal vas zdrojak a smazal odesilani na mail spustil na easyphp na localhostu a zkousel

Avatar

Autor komentáře: erik

Datum vložení: 22.2.2009 21:37:35

ked dam "UPLOAD" nic sa nestane. Ta to co tu potom davate ked to nejde

Avatar

Autor komentáře: pirat89

Datum vložení: 28.2.2009 19:04:56

Milí vážení kterým to nefunguje a stěžujete si. Nebuďte líní a naprogramujte si to sami. Každý by měl brát zdrojové kódy na internetu především orientačně, zvlášt v seriálech, jako návod jak je to možné udělat. Berte v potaz, že článek byl napsán před lety. PHP není slimák ležící na jednom místě, ale jde s dobou. Navíc tento upload by si dal na stránky pouze naprostý amatér, protože každý ví, že takto získaný mime type od klienta je velice snadno podvrhnutelný

Zpět na článek | Úvodní stránka Interval.cz