Autor Zpráva
Bita
Profil *
Zdravím, prosím Vás, mohl by mi někdo pomoct s hotovým kódem ? Už tohle řeším delší dobu a nenašel jsem nic co by mi vyhovovalo. Potřeboval bych prostě vybrat a nahrát fotku a nahranou fotku uložit do složky kam chci. ( Vždy jen jednu fotku ) Předem díky moc !
abc
Profil
Velice jednoduše např. nějak takto
<!DOCTYPE HTML>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<?php
$allowed_extensions = array("jpeg", "jpg", "png",); //povolené přípony souborů
$upload_dir = __DIR__ . "/upload"; //kam se má nahrávat

if ($_POST) {//došlo k odeslání formuláře
    //ověření správné přípony
    $extension = end(explode(".", $_FILES['file']['name']));
    if (!in_array($extension, $allowed_extensions)) {
        echo "Nahraný typ souboru (" . $extension . ") není mezi povolenými";
        exit;
    }
    //nahrání do složky
    move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir . $_FILES['file']['name']);
}
?>
<form enctype="multipart/form-data" action="" method="POST"><!-- duležitý je správný enctype -->
    <label>Soubor k nahrání:<input name="file" type="file"></label><br>
    <input type="submit" name="send" value="Odeslat">
</form>
Davex
Profil
abc:
Jen upozorním, že není bezpečné kontrolovat pouze poslední příponu nahrávaného souboru, protože špatně nakonfigurovaný webserver vykoná PHP skript i v souboru s dvojitou příponou. Např. skript.php.jpg nebo i s jinými jako .php4, .php5, .php54, a nejenom PHP. Ideální by bylo vygenerovat vlastní bezpečný název souboru (minimálně aplikovat basename() + nahradit přípony) a uložit do adresáře s vypnutým vykonáváním skriptů.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: