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 ... :)