Autor | Zpráva | ||
---|---|---|---|
Mesiah Profil |
#1 · Zasláno: 27. 1. 2009, 17:07:44 · Upravil/a: Mesiah
Dobrý den,
trochu si hraju s php na windows a tedkom pracuju s nahravanim souboru na server. script postupuje takto: Je admin? Je velikost menší než 500? Je nahraný na server? Povedlo se přesunout z tempu tam kam má? echo "jo, tak to by bylo."; Ale problem je v tom, že při testování, zda je soubor nahraný na server mi vyhodi, ze neni nahrany. (vypisuje chybu "2" (pomocí $_FILES['picture']['error'])) k testování jestli je nahraný na server používám: "if ( is_file($_FILES['picture']['tmp_name']) )". A dál by mě zajímalo: kam php ukládá dočasné soubory? koukal jsme do php.ini a tam se mi to nepodařilo najít. Takže, poradí mi někdo prosim ? :) PS: PHP si ze me dela srandu? Nevim, jak vy, ale ja si pod if ($_FILES['picture']['size']<500000) predstavim to, ze pustim jen ten soubor, ktery ma mensi velikost nez 500kb, ale moje PHP 5 si to asi nemysli... Takže přidávám celý script, první je pro zobrazeni formu a druhy je jeho zpracovani. Můžete m říct, kde že je ta chyba? :-( function FormPridejObrazek($vstup) { $dotaz = mysql_query("SELECT produkty.IDProduktu AS IDProduktu, kategorie.TextKategorie AS Kategorie, skupiny.`Text` AS Skupina FROM produkty Inner Join kategorie ON produkty.IDKategorie = kategorie.IDKategorie Inner Join skupiny ON produkty.IDSkupiny = skupiny.IDSkupiny WHERE produkty.IDProduktu = ".$vstup); if ($dotaz) { $pristup = mysql_fetch_array($dotaz); echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"500\"> \n"; echo "<form method=\"POST\" ENCTYPE=\"multipart/form-data\" action=\"pridejobrazek.php\"> \n"; echo "<tr> \n<td> Obrázek (maximálně 500kb): </td> \n"; echo "<td> \n"; echo "<input type=\"hidden\" name=\"skupina\" value=\"".$pristup['Skupina']."\"> \n"; echo "<input type=\"hidden\" name=\"kategorie\" value=\"".$pristup['Kategorie']."\"> \n"; echo "<input type=\"hidden\" name=\"idproduktu\" value=\"".$pristup['IDProduktu']."\"> \n"; echo "<input type=\"HIDDEN\" name=\"MAX_FILE_SIZE\" value=\"500\"> \n"; echo "<input type=\"file\" name=\"picture\" ACCEPT=\"image/*\"> \n"; echo "</td> \n</tr> \n<tr> \n"; echo "<td colspan=\"2\"> <input type=\"submit\" value=\"Odeslat\"> </td> \n"; echo "</tr> \n</form> \n</table> \n"; } } <?php include("opendb.php"); include("public.php"); include("fce.php"); if ( JeAdmin() ) { if ($_FILES['picture']['size']<500000) { // maximalní velikost obrázku je 500kb, pokud je menší, tak pokračuji ve scriptu if ( is_file($_FILES['picture']['tmp_name']) ) { // soubor se dostal na server... if ( move_uploaded_file($_FILES['picture']['tmp_name'], "./picture_product/".$_POST['skupina']."/".$_POST['kategorie']."/".$_POST['idproduktu']."/".$_FILES['picture']['name']) ) { // podařilo se překopírovat uploadovaný soubor do slozky: // ./picture_product/skupina/kategorie/idproduktu/soubor.jpg echo "Obrázek se podařilo úspěšně nahrát na server."; } else { echo "Bohužel, nepodařilo se přesunout soubor tam, kam patří."; } } else { echo "Žádný soubor jste neuploadovali.<br />"; echo "Chyba: ".$_FILES['picture']['error']; } } else { echo "Soubor je příliš velký."; } } else { echo "Musíte být přihlášen."; } ?> |
||
AM Profil * |
#2 · Zasláno: 27. 1. 2009, 17:34:26
většinou do c:\windows\temp
UPLOAD_ERR_FORM_SIZE Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form. Jestli zadáváš maxfilesize="500", tak to znamená 500 bytů ;) a to asi nebude dobře. Jinak to není bezpečný způsob - uživatel si může HTML změnit, pro bezpečnou kontrolu velikosti musíš provést kontrolu na serveru (php.ini upload_max_filesize nebo přes $_FILES['sbr']['size']; |
||
Mesiah Profil |
#3 · Zasláno: 27. 1. 2009, 17:46:35
AM
aha, diky za radu ohledně chyby 2 :) ale další věc je to, že mě php nema rado. if ($_FILES['picture']['size']<500000) rekl bych, ze pusti jen ten soubor, ktery ma mensi velikost nez 500kb, ale moje PHP 5 si to asi nemysli... ach jo. :-( |
||
Časová prodleva: 15 let
|
0