Autor | Zpráva | ||
---|---|---|---|
Suta Profil |
#1 · Zasláno: 27. 9. 2005, 12:30:22 · Upravil/a: Suta
Ahoj. Už půl dne procházím všechny možné stránky s řešením nahrání souboru na server, a nic...
Může mi někdo poradit ? Díky. Co je blbě ? Tady je formulář (formular.php): <HTML> Tady je script, který to má zpracovat a nahrát do adresáře foto na serveru (nahrej.php): <? |
||
Hugo Profil |
#2 · Zasláno: 27. 9. 2005, 12:54:05
Problem muze byt ve funkci copy(), ta je zakazana, pokud je spusteny safe mod. Zkus misto ni pouzit move_uploaded_file().
|
||
Leo Profil |
#3 · Zasláno: 27. 9. 2005, 13:04:05
Presne tak, move_uploaded_file, s pouzitim pole $_FILES['foto'], Leo
|
||
Suta Profil |
#4 · Zasláno: 27. 9. 2005, 13:06:02 · Upravil/a: Suta
Nemá někdo nějaký dobrý odkaz, kde je podrobně napsané, jak uložit např. fotku do databáze pomocí formuláře input type="file" a scriptu ?
Nikde jsem to nenašel. Všude jen samé složité uploudování souborů, ale podrobně napsané, jak se po odeslání souboru ve scriptu připojit k databázi a vložit do ní soubor, to nikde není. Nejsem zběhlý v php, tak bych potřeboval nějaký rozumný odkaz. Čert aby to spral. |
||
Hugo Profil |
#5 · Zasláno: 27. 9. 2005, 13:10:24
Suta
Rozhodne ti doporucuju ukladat jen URI a fotky uploadovat na disk. Usetris si hodne potizi a vetsinou je to i rychlejsi. |
||
Suta Profil |
#6 · Zasláno: 27. 9. 2005, 14:43:09 · Upravil/a: Suta
Hm... nefunguje mi to.
<body> - mělo by to nahrát soubor '$odeslana_stranka' do adresáře 'foto' a uložit jej jako soubor s názvem '$odeslana_stranka'. (adresář, do kterého se zapisuje prý musí mít správně nastaveno právo zápisu a spouštění, nevím však co, kde, jak atd.) |
||
Hugo Profil |
#7 · Zasláno: 27. 9. 2005, 14:58:13
Pohledej v teto diskuzi, nastaveni prav souboru se tu resilo mockrat.
|
||
Suta Profil |
#8 · Zasláno: 27. 9. 2005, 16:03:07 · Upravil/a: Suta
Prohledal jsem toho dost, a stále nevím, zda je to těmi právy a jak se do dá případně změnit (napsáním nějakého scriptu?, přímo v nastavení na serveru?
(přece pokud jsem nikde nic nenastavoval, tak jako administrátor, který vytvořil stránku v PHP bych měl mít automaticky povoleno uložit si přes PHP nějaký soubor do adresáře na serveru, nebo ne ?) Je výše uvedený script chybný ? |
||
Leo Profil |
#9 · Zasláno: 27. 9. 2005, 16:35:28
"$_FILES["$odeslana_stranka"]["$soubor"]"
Mate blbe obsah tech zavorek, Leo |
||
Suta Profil |
#10 · Zasláno: 27. 9. 2005, 17:06:36
A jak to spravit ?
|
||
Leo Profil |
#11 · Zasláno: 27. 9. 2005, 17:16:04
Treba
$_FILES['odeslana_stranka']['tmp_name'] Leo |
||
Suta Profil |
#12 · Zasláno: 27. 9. 2005, 17:42:39
<? vyhodí hlášku: Warning: move_uploaded_file(): Unable to access ./foto//home/tmp/phpioGFNE in /3w/wz.cz/s/suta/zapis.php on line 13 |
||
Leo Profil |
#13 · Zasláno: 27. 9. 2005, 17:53:28
Tak to je problem az v tom druhem argumentu - Apache totiz pri move_uploaded_file jako aktualni adresar nebere ten, kde mate php skript, takze tecka v "./foto/..." je neco jineho, nez si myslite:
http://php.ftp.cvut.cz/manual/cs/function.move-uploaded-file.php Treti komentar shora, Leo |
||
Leo Profil |
#14 · Zasláno: 27. 9. 2005, 17:55:39
A jeste jedna vec - predtim, nez to lidem umoznite, musite zabezpecit, ze to, co uploaduji, neni treba php skript, ale opravdu fotka, jinak se nebudete stacit divit :-) Leo
|
||
Suta Profil |
#15 · Zasláno: 27. 9. 2005, 17:56:14 · Upravil/a: Suta
No jo, kdybych nedělal němčinu tak bych si možná početl. Jak tedy nastavit cestu ?
Já vím, ale já už jsem asi 90% původního zdrojového kódu vymazal až mi zůstal tento základ, který taky nefunguje. |
||
Leo Profil |
#16 · Zasláno: 27. 9. 2005, 17:59:43
Ted na to koukam, ze tam mate jeste $odeslana_starnka, co si myslite, ze v te promenne mate? :-) Leo
|
||
Leo Profil |
#17 · Zasláno: 27. 9. 2005, 18:00:40
Nemcina vam je pri programovani tak na dve veci... Leo
|
||
Suta Profil |
#18 · Zasláno: 27. 9. 2005, 18:06:03
Myslel jsem že se takto nahraný soubor přejmenuje. Je to špatně?
|
||
Leo Profil |
#19 · Zasláno: 27. 9. 2005, 18:11:45
Tak si zkuste vypsat
echo $odeslana_stranka, co vam to vypise? Leo |
||
Suta Profil |
#20 · Zasláno: 28. 9. 2005, 17:04:27
Problém vyřešen. Díky.
|
||
Leo Profil |
#21 · Zasláno: 28. 9. 2005, 18:52:57
Neni za co, Leo
|
||
Suta Profil |
#22 · Zasláno: 29. 9. 2005, 12:30:51 · Upravil/a: Suta
Tak ještě:
1) v databázi je tabulka s názvem "prvnitabulka" 2) v tabulce je sloupec "foto" 3) ve sloupci foto je záznam "Alkohol.jpg" 4) na serveru v adresáři "foto" mám soubor (obrázek) "Alkohol.jpg ... Zatím vše v pořádku ... Když chci záznam "Alkohol.jpg" vypsat, použiji: $test = mysql_fetch_array(mysql_query("select * from prvnitabulka")); Vypíše text: Alkohol.jpg ... Zatím vše v pořádku ... A teď když chci výše uvedené (což funguje) spojit a zobrazit tak obrázek ze souboru foto s názvem Alkohol.jpg a napíšu: $test = mysql_fetch_array(mysql_query("select * from prvnitabulka")); ... tak nefunguje. Zkoušel jsem všechny možné zápisy syntaxe ( '<img src="foto\'.$test["foto"].'">' nebo echo "<img src=\"foto/$test[\"foto\"]\">" ... Čím to ? Mám problém v syntaxi ? Nebo php neumí zobrazit proměnou vytaženou z databáze v cestě k otevíranému souboru ?? |
||
Leo Profil |
#23 · Zasláno: 29. 9. 2005, 12:37:31
echo "<img src=\"$test['foto']\">";
Leo |
||
Suta Profil |
#24 · Zasláno: 29. 9. 2005, 12:45:09
Myslíš echo "<img src=\"foto/$test['foto']\">"; (zapomněl jsi na cestu do adresáře foto)
Jasně, tak jsem to taky zkoušel, a nic. Píše: Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /3w/wz.cz/s/suta/hlavni.php on line 62 |
||
Suta Profil |
#25 · Zasláno: 29. 9. 2005, 12:50:51
A přitom
echo "<img src=\"foto/Alkohol.bmp\">"; funguje. Když chce ale místo Alkohol.bmp použít $test['foto'], ve které je hodnota Alkohol.bmp, tak to nejede. Vážně nevím. |
||
Časová prodleva: 3 dny
|
|||
jooka Profil |
#26 · Zasláno: 3. 10. 2005, 00:12:49 · Upravil/a: jooka
Co takhle:
echo "<img src=\"foto/".$test['foto']."\">"; případně: printf('<img src="foto/%s">', $test['foto']); |
||
Anonymní Profil * |
#27 · Zasláno: 3. 10. 2005, 10:30:55
můžete mi prosímvás vysvětlit , proč se trápíte a eskapováním uvozovek, když to jde jednoduše pomocí apostrofu???
krteczek PS:navíc výpisy v apostrofech php neparsuje, takže běh skriptů je rychlejší |
||
Časová prodleva: 3 dny
|
|||
kuba Profil * |
#28 · Zasláno: 6. 10. 2005, 03:28:56
proc mi nefunguje upload u obrazku typu jpg, png??? u gif vse funguje, u txt taky.
po odeslani formulare se mi ma vykonat take cast tohoto skriptu : $userfile_type = $_FILES['userfile']['type']; if($userfile_type != 'image/jpg') { echo 'Typ nahravaneho souboru musi mit priponu <b>jpg</b>.'; exit; } ...nerozpozna, ze jde o jpg popr. png atd. :-)... |
||
Hugo Profil |
#29 · Zasláno: 6. 10. 2005, 06:01:41
kuba
Tady je citace z php.net http://mirrors.inway.cz/manual/en/features.file-upload.php#53133 keith at phpdiary dot org 24-May-2005 01:14 Caution: *DO NOT* trust $_FILES['userfile']['type'] to verify the uploaded filetype; if you do so your server could be compromised. I'll show you why below: The manual (if you scroll above) states: $_FILES['userfile']['type'] - The mime type of the file, if the browser provided this information. An example would be "image/gif". Be reminded that this mime type can easily be faked as PHP doesn't go very far in verifying whether it really is what the end user reported! So, someone could upload a nasty .php script as an "image/gif" and execute the url to the "image". My best bet would be for you to check the extension of the file and using exif_imagetype() to check for valid images. Many people have suggested the use of getimagesize() which returns an array if the file is indeed an image and false otherwise, but exif_imagetype() is much faster. (the manual says it so) |
||
kuba Profil * |
#30 · Zasláno: 6. 10. 2005, 12:16:28
dekuju za radu. jenom pro uplnost dodam, ze v php.ini musi byt odkomentovano
extension=php_mbstring.dll a pak : extension=php_exif.dll http://www.zend.com/manual/install.windows.extensions.php |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0