Autor Zpráva
_Honza_
Profil *
Můžete mi prosím někdo poradit jak jednoduše testovat typ a velikost načítaného souboru.
Načítám ho viz ZDE
Právě že v tomto případě není vstup nijak chráněný tudíž dost nebezpečný třeba na poslání jakéhokoli viru. Chci to využívat pouze na jpeg do velikosti cca 500Kb.
Ještě bych se zeptal, jakým příkazem jdou soubor po odeslání ze složky zase odstranit, zkoušel jsem v tom scriptu zapsat del a podobné ale k úspěšnému konci jsem se nedostal. Jinak ten scipt funguje po úpravě dobře. (potřeboval jsem změnit formulář)
Díky
djlj
Profil
_Honza_
Typ můžeš myslím jen otestovat podle přípony... Velikost souboru jde skvěle zjistit (okamžitě - ne až po dokončení uploadu) kombinací ajaxu a php5 (hledej na googlu, odkaz nemám po ruce)... jinak to můžeš zjistit klasicky, až po uploadu pomocí $_FILES[soubor][size];

Na mazání souboru je fce unlink..
_Honza_
Profil *
Ten typ chci testovat jen podle přípony, o nic jiného mi nejde a tu velikost bych potřeboval zjistit před uploadem, to jen aby mi někdo nechtěl z toho rozraní poslat třeba 10Mb velký bmp.

Za tu fci dík, hned zejtra ten scipt zase začnu upravovat.
djlj
Profil
No tak příponu zjistíš takto...

if (substr(strtolower($_FILES[soubor][name]), -3, 3) == "jpg" or substr(strtolower($_FILES[soubor][name]), -4, 4) == "jpeg"){

jedná se o jpg

}
djlj
Profil
tu velikost bych potřeboval zjistit před uploadem, to jen aby mi někdo nechtěl z toho rozraní poslat třeba 10Mb velký bmp.

No i kdybys tu velikost kontroloval po uploadu, tak soubor nemusíš ukládat na disk. Při uploadování se ukládá do nějaké temp složky na serveru, ne k tobě...

if ($_FILES[soubor][size]>512000){

echo "Soubor je větší než 512 kB.";

}
_Honza_
Profil *
Můžeš mi to prosimtě do toho nějak začlenit už si s tim hraju skoro 2 hodiny a pořád na to němůžu přijít.
Tady je script - ponechal jsem starej s vysvětlivkama:

$prijemce = "r.skola@seznam.cz";

if ($akce == "Odeslat") { /* Bylo stisknuto tlacitko Odeslat */

if ($soubor_name == "") { /* nebyla vybrana priloha, posleme e-mail obycejne */

if (mail ("$prijemce","E-mail z webu - $subject", "$dopis", "From: $odesilatel")) {
echo "<h3>E-mail byl úspěšně odeslán!</h3>";
}
else {
echo "<h3>E-mail se nepodařilo odeslat!</h3>";
}
}
else { /* priloha byla vybrana */
/* nejprve sestrojime hlavicky */

$envelope["from"] = "$odesilatel";
$envelope["to"] = "$prijemce";

/* nyni sestrojime nekolik casti dopisu */
/* 1. cast - uvodni, tou rekneme, ze dopis ma vice casti s ruznymi typy dat */

$part1["type"] = TYPEMULTIPART;
$part1["subtype"] = "mixed";

/* 2. cast - do dopisu pripojime prilohu */
/* nejprve zadany soubor nacteme */

Copy($soubor, $soubor_name); /* uploadnuty soubor zkopirujeme z docasneho adresare */

$f = fopen ($soubor_name, "r"); /* otevren pro cteni */
$obsah = fread ($f, filesize($soubor_name)); /* nacteme obsah do promenne */
fclose ($f);

$part2["type"] = TYPEAPPLICATION;
$part2["encoding"] = ENCBINARY;
$part2["subtype"] = "octet-stream";
$part2["description"] = basename($soubor_name);
$part2["contents.data"] = "$obsah";

/* 3. cast - do dopisu vlozime zadany text */
$part3["type"] = TYPETEXT;
$part3["subtype"] = "plain";
$part3["description"] = "text";
$part3["contents.data"] = $dopis;

/* Cely dopis ulozime do pole body */
$body[1] = $part1;
$body[2] = $part2;
$body[3] = $part3;

/* celou zpravu vytvorime a ulozime do promenne $zprava: */
$zprava = imap_mail_compose ($envelope, $body);

/* drive nez posleme zpravu funkci Mail musime rozdelit
zvlast hlavicku a zvlast telo: */

$pom = StrPos($zprava, "\r\n\r\n");
$hlavicka = SubStr($zprava, 0, $pom+2);
$telo = SubStr($zprava, $pom, StrLen($zprava) - $pom);

if (mail ("$prijemce", 'Zpráva z webu', $telo, $hlavicka)) {
print "<h3>E-mail byl úspěšně odeslán!</h3>";
}
else {
print "<h3>E-mail se nepodařilo odeslat!</h3>";
}
}
}
}

?>

Tady je kdyžtak formulář:
<FORM ACTION="send.php" METHOD="post" ENCTYPE="multipart/form-data">

Odesílatel: <INPUT TYPE="text" NAME="odesilatel" VALUE="" SIZE=50 MAXLENGTH=50><BR>
Předmět: <INPUT TYPE="text" NAME="subject" VALUE="" SIZE=50 MAXLENGTH=50><BR>
<BR>
Text:<BR>
<TEXTAREA NAME="dopis" COLS="50" ROWS="10"></TEXTAREA><BR>
Soubor: <INPUT TYPE="file" NAME="soubor"> <BR>
<INPUT TYPE="submit" NAME="akce" VALUE="Odeslat"><BR>
</FORM>


Potřeboval bych to upravit tak, aby to neposlalo soubor větší než 512kb, přípony pouze jpg,jpeg,doc a aby se ten soubor potom smazal. Snad mi pomůžeš, já už si fakt nevim rady, navíc s PHP dělam asi tak měsíc a teprv se s nim učim zacházet. Díky
Toto téma je uzamčeno. Odpověď nelze zaslat.

0