Autor | Zpráva | ||
---|---|---|---|
Slower Profil * |
Dobrý den,
jsem začátečník v php, tak se předem omlouvám za stupidní chyby... potřeboval bych pomoci s obrázkem, který chci nahrát na web a zobrazit. Například určitě všeci známe z praxe, Když si chci nahrát profilovou fotku tak se zobrazí a když nenahraji tak nebude žádný obrázek... kde je problém: když dám VYBRAT soubor a po zmáčknutí tlačítka formuláře ODESLAT se mi zobrazí hláška: Objekt nenalezen! Požadované URL nebylo na tomto serveru nalezeno... zkouším to na localhostu ve winu (Apache, MySQL,PHP) balíček XAMPP... Tady mam kod: <div> <?php IF (ISSET($_FILES["fupload"])) { PRINT "nazev: ". $_FILES['fupload']['name'] ."<br />" ; PRINT "velikost: ". $_FILES['fupload']['size'] ."bajtu<br />" ; PRINT "umisteni: ". $_FILES['fupload']['tmp_name'] ."<br />" ; PRINT "typ: ". $_FILES['fupload']['type'] ."<br />" ; PRINT "chyba: ". $_FILES['fupload']['error'] ."<br />" ; IF ($_FILES['fupload']['type'] == "image/pjpeg" ) { $nazev_souboru = $_FILES['fupload']['tmp_name']; $cil= "soubory/". $_FILES['fupload']['name']; move_uploaded_file($nazev_souboru, $cil) OR DIE ("nelze"); $size = getImageSize($cil); $html_img_str = "<p><img width=\"$size[0]\" height=\"$size[1]\""; $html_img_str .= "src=\"$cil\"alt=\"preneseny obrazek\" /></p>"; print $html_img_str; } } ?> </div> <form enctype="multipart/form-data" action="<?php print $_SERVER['PHP_SELF']?> method="post"> <p> <input type="hidden" name="MAX_FILE_SIZE" value="25600" /> <input type="file" name="fupload" style="width: 500px; " /><br /> <input type="submit" value="Odeslat soubor" /> </p> </form> Moderátor Davex: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na
![]() |
||
nethor Profil |
#2 · Zasláno: 9. 3. 2012, 18:53:07
Zrada je tady:
action="<?php print $_SERVER['PHP_SELF']?>" method="post"> A druhá zrada bude pravděpodobně číhat v použití $_SERVER['PHP_SELF'] - tady záleží, jestli máš bastaveno <base> zkus action nastavit manuálně. |
||
Slower Profil * |
#3 · Zasláno: 9. 3. 2012, 19:07:52
nethor:
jo bylo to tím, že mi tam chyběla uvozovka díky:) ale ještě se mi nezobrazí obrázek na té stránce a nevím proč... jenom tohle: nazev: obrazek.jpg velikost: 9662bajtu umisteni: C:\xampp\tmp\php3D3C.tmp typ: image/jpeg chyba: 0 *****A zde by měl být náhled toho obrázku ne?**** * * ****************************************** |
||
nethor Profil |
#4 · Zasláno: 10. 3. 2012, 11:37:31
Zkus si script naechovat - a vystopovat chybu, našel bys ji.. ;-)
IF ($_FILES['fupload']['type'] == "image/pjpeg" ) |
||
Keeehi Profil |
#5 · Zasláno: 10. 3. 2012, 12:14:30
nethor:
To není chyba, takto to odesílá IE. Slower: Není to bezpečné. Hodnotu v $_FILES['fupload']['type'] vytváří prohlížeč, takže se dá podvrhnout. Pokud to zkoušíš lokálně, tak OK, ale veřejně to umístit nesmíš. |
||
nethor Profil |
#6 · Zasláno: 10. 3. 2012, 12:25:25
Keeehi:
„To není chyba, takto to odesílá IE.“ Jestě, že je to chyba: není to ošetřené va scriptu a proto mu script nefunguje. image/pjpeg , image/jpeg, ... záleží na způsobu uložení jpegu. řešil bych to přes getimagesize(). |
||
Keeehi Profil |
nethor:
Stačí změnit prohlížeč a už to funguje. To co jsi napsal ty, zase nebude fungovat v IE, takže to je vlastně dle tvé logiky taky chyba. Tohle už by mohlo být správně: IF (in_array($_FILES['fupload']['type'], array("image/pjpeg","image/jpeg") ) „řešil bych to přes getimagesize()“ Zabezpečení? To nestačí! |
||
Slower Profil * |
#8 · Zasláno: 10. 3. 2012, 12:50:37
Keeehi:
tak jsem změnil typ na image/jpeg a vypíše mi to chybu níže uvedenou: Warning: move_uploaded_file(soubory/6ab49dfe4a61396ef2c79f0092d39d34.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\www\upload.php on line 15 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\phpC19D.tmp' to 'soubory/6ab49dfe4a61396ef2c79f0092d39d34.jpg' in C:\www\upload.php on line 15 nelze a ani nejde pomoci array Parse error: syntax error, unexpected T_ARRAY in C:\www\upload.php on line 11 Porad se mi nezobrazi obrazek co bych chtěl... |
||
jenikkozak Profil |
Slower:
„tak jsem změnil typ na image/jpeg“ Vyrazil jsi klín klínem, teď ti to nebude fungovat v IE. „a ani nejde pomoci array“ Uprav tu část, kterou napsal Keeehi, takto: IF (in_array($_FILES['fupload']['type'], array("image/pjpeg","image/jpeg") )) |
||
Keeehi Profil |
#10 · Zasláno: 10. 3. 2012, 12:58:55
Slower:
V "array" jsem měl překlep. Už je to opraveno. Ta první chyba souvisí s něčím jiným. Existuje složka C:\www/soubory/ ? Má script právo do ní zapisovat?
|
||
nethor Profil |
#11 · Zasláno: 10. 3. 2012, 13:08:06
Keeehi:
„To co jsi napsal ty, zase nebude fungovat v IE“ Nepsal jsem řešení, jen jsem upozornil na chybu. Tak se uklidni. Slower: 1) Zkontroluj, jestli tam máš adresář 'soubory'. Případně nastavení chmod - na serveru. 2) Parse error: syntax error ... Chybí čárka mezi parametry viz in_array |
||
Slower Profil * |
#12 · Zasláno: 10. 3. 2012, 13:30:26
Děkuji, už to frčí! díky moc:) opravil jsem chybu, chyběla tam opravdu čárka:)
|
||
Keeehi Profil |
#13 · Zasláno: 10. 3. 2012, 14:11:06
nethor:
Jak psal jenikkozak, něco jsi opravil, ale něco zase rozbil. Pokud chceš chybu, tak chyba je toto: k "image/pjpeg" tam chybí "image/jpeg". Ne že tam pjpeg nemá co dělat. |
||
Časová prodleva: 19 dní
|
|||
kikakov Profil |
#14 · Zasláno: 29. 3. 2012, 18:41:30
Slower:
ako potom ma vyzerat zdrojak bez chyb? uz som z toho pometena, dakujem |
||
Časová prodleva: 11 let
|
0