Autor Zpráva
moom
Profil
Dobrý den, rád bych vás poprosil o pomoc.
Používám následující PHP na upload souboru.

Rád bych se zeptal jak to omezit, aby se mohl
nahrát pouze soubor s názvem cenik.doc do velikosti 5MB
Prosím, prosím, nemáte někdo nějakou radu.
Pokud bude jiný název, nebo větší velikost
oznámí to hlášku, že se akce neprovedla.

Řeším tímto způsobem nahrávání ceníku na web
přes webové rozhraní, kdy na stránkách firmy odkazuji
na tento ceník.

V této podobě lze nahrát libovolný soubor,
což není dobré.

    <?php
$soubor_name = ($_FILES["soubor"]["name"]);
$soubor = ($_FILES["soubor"]["tmp_name"]);
$ok = ($_POST["ok"]);

if ($ok == "Upload" && $soubor_name!="")
{
    if (move_uploaded_file($soubor, "./$soubor_name"))
        {
        chmod ("./$soubor_name", 0646);
        echo "<p>
				Soubor <span> $soubor_name </span><br />
				byl nahrán na server a je k použití<br />
				<a href=\"cenik.doc\">Kontrola vloženého souboru</a><br />
			</p>";
        }
    else
        {
        echo "<p>Chyba - soubor nebyl nahrán!</p><br />";
        }
}
?>
Majkl578
Profil
pridat podminku:
if ($soubor_name === 'cenik.doc' && filesize($soubor) < 5*1024*1024)
moom
Profil
Děkuji za pomoc, ale jsem knedla...
Já se vůbec v PHP nevyznám a ani netuším
kam to vložit. Dal jsem to před první IF
a funguje to, jenom když vložím jiný soubor,
tak se nezobrazí chybová hláška...

Prosím, prosím, jak to mám udělat
Joker
Profil
moom:
Jestli se má zobrazit hláška "Chyba - soubor nebyl nahrán!", stačilo by přidat ty podmínky na řádek 8:

    if (($soubor_name === 'cenik.doc') && (filesize($soubor) < 5*1024*1024) && move_uploaded_file($soubor, "./$soubor_name"))

Poznámka: to move_uploaded_file by mělo být v tomhle případě na konci, tak jak je to napsané- nebude-li splněná jedna z těch dřívejších podmínek, k move_uploaded_file se ani nedojde.
moom
Profil
Joker:

Ty jsi zlato :) děkuji, děkuji, děkuji, už to fachá.
Dlužím pivko i s utopencem. Ještě jednou díky
za pomoc. Vážím si toho, že někdo obětuje svůj čas
pro pomoc druhým.

S pozdravem,
moom

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0