Upload souboru a register_globals = Off
8 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Brecer, mam formular, kterym si uzivatel muze uploadnout ikonu. Kdyz mam register_globals = On, je vse v pohode. Vypnu-li ale tuto direktivu je promenna $_POST['ikona']; prazdna. Vlastne je prazdna ikdyz mam register_globals = On. Formular: <form action="_muj_profil.php" method="post" enctype="multipart/form-data"> Ikona (soubor typu JPEG, rozměr 40 x 45 px): <input type="file" size="44" name="ikona" accept="image/jpeg" /> <button type="submit">Upload</button> </form> _muj_profil.php: <? if (Is_Uploaded_File($ikona)): $kam = "D:/Program Files/www/".$_SESSION['auth_id'].".jpg"; if (!Move_Uploaded_File ($ikona, $kam)): die ("Nepodařilo se uploadovat ikonu (Chyba: _muj_profil.php-2)"); endif; endif; ?> Vkladam to podruhe, protoze jsem to nedopatrenim vlozil jinam
-
Neměla být cesta spíše od servru? tak to bude fungovat jen u tebe doma.. Jinak soubor není v proměnné post, ale $_FILES, a je to dvourozměrné pole co na to říká manual: $HTTP_POST_FILES/$_FILES obsahuje informace o uploadovaném souboru. Obsah $HTTP_POST_FILES je takovýto (uvědomte si, že se předpokládá použití názvu uploadovaného souboru 'userfile' tak, jako v příkladu výše): $HTTP_POST_FILES['userfile']['name'] Originální název souboru na klientském počítači. $HTTP_POST_FILES['userfile']['type'] MIME typ souboru, pokud prohlížeč tuto informaci poskytuje (např. "image/gif"). $HTTP_POST_FILES['userfile']['size'] Velikost uploadovaného souboru v bytech. $HTTP_POST_FILES['userfile']['tmp_name'] Dočasný název souboru, pod nímž byl uploadovaný soubor uložen na server. Poznámka: PHP 4.1.0 a pozdější podporují zkrácený název proměnné $_FILES. PHP 3 nepodporuje $HTTP_POST_FILES.
-
Jj, diky ... odpoledne se mi to taky podarilo konzultovat s manualem ... Jasne, ze to bude jen doma, testuju ... jinak tam samozrejme bude cesta k adresari na serveru ... Jinak, jeste k tomu mam dotaz, udelal jsem to takhle <? if (Is_Uploaded_File($_FILES['ikona']['tmp_name'])): if ($_FILES['ikona']['type'] == "image/jpeg"): if ($_FILES['ikona']['size'] <= $GLOBALS['velikost_ikony'] * 1024): $kam = "D:/ikony/".$_SESSION['auth_id'].".jpg"; if (!Move_Uploaded_File ($_FILES['ikona']['tmp_name'], $kam)): die ("Nepodařilo se uploadovat ikonu (Chyba: _muj_profil.php-2)"); endif; else: $velikost_kb = Round (BCDiv ($_FILES['ikona']['size'], 1024, 2)); die ("Nepodařilo se uploadovat ikonu, zabírá moc místa (".$velikost_kb." kB)"); endif; endif; endif; ?> Ani trochu to nechapu, ale kdyz to zkousim v FF, tak se soubor vytvori, popr. prepise. Jenze v IE se nedeje nic ... Maximalni velikost ikony je nastavena na 10 kB, jenze IE ani nezahlasi, ze je ta ikona vetsi ... proste to projede a presmeruje ... ani nehodi zadnou chybu
-
No.. PHP je jedno, jestli ho pouštíš v IE nabo FF.... Možná bych dal spíše : Move_Uploaded_File ($ikona, $kam) ale to by mělo být jedno.. Jestli máš máš nastavený form na enctype="multipart/form-data" a pak kde bereš tu $GLOBALS['velikost_ikony'] Ale typoval bych, že ti chybí ten parametr formu...
-
Cely zpracovani je takhle, ty $GLOBALS[] sou nastaveny v config.php <? Session_Start (); include_once ("../inc/config.php"); // Predani promennych $email = $_POST['email']; // Mail pro potvrzení registrace $jmeno = $_POST['jmeno']; // Jmeno $prijmeni = $_POST['prijmeni']; // Prijmeni $vek = $_POST['vek']; // Vek $telefon = $_POST['telefon']; // Telefon $icq = $_POST['icq']; // ICQ $pohlavi = $_POST['pohlavi']; // Pohlavi $zverejnit = $_POST['zverejnit']; // Zverejnovat udaje? $status = true; // Kontrolni promenna do { Db_conn (); $sql_update_nick= "UPDATE registrace SET email = '".$email."', jmeno = '".$jmeno."', prijmeni = '".$prijmeni."', vek = '".$vek."', telefon = '".$telefon."', icq = '".$icq."', pohlavi = '".$pohlavi."', zverejnit = '".$zverejnit."' WHERE nick = '".$_SESSION['auth_nick']."'"; $edituj_profil = MySQL_Query ($sql_update_nick); if (!$edituj_profil): die ("Dotaz selhal. Omluvte potíže (Chyba: _muj_profil.php-1)"); endif; if (Is_Uploaded_File($_FILES['ikona']['tmp_name'])): if ($_FILES['ikona']['type'] == "image/jpeg"): if ($_FILES['ikona']['size'] <= $GLOBALS['velikost_ikony'] * 1024): $kam = "D:/Program Files/www/ikony/".$_SESSION['auth_id'].".jpg"; if (!Move_Uploaded_File ($_FILES['ikona']['tmp_name'], $kam)): die ("Nepodařilo se uploadovat ikonu (Chyba: _muj_profil.php-2)"); endif; else: $velikost_kb = Round (BCDiv ($_FILES['ikona']['size'], 1024, 2)); die ("Nepodařilo se uploadovat ikonu, zabírá moc místa (".$velikost_kb." kB)"); endif; endif; endif; } while (false); // Presmerovani na muj_profil.php s informaci Header ("Location: ".$GLOBALS['url_root']."profil/muj_profil.php"); ?> Formular je takhle <form action="_muj_profil.php" method="post" inctype="multipart/form-data"> <input type="file" size="44" name="ikona" accept="image/jpeg" /> <button type="submit">Upravit profil</button> </form> Je mi jasny, ze by to PHP melo a je jedno ... jen to proste nechapu
-
Máš tam inctype místo enctype :D
-
Zase jen blbej preklep tady pri kopirovani a upravach ... :/ Kdyby tam byl, tak by to prece neslo ani v FF
-
Tak uz jsem to vyresil ... IE vraci mime jako image/pjpeg a ne image/jpeg ... V tom to tedy bylo ... :)