Autor | Zpráva | ||
---|---|---|---|
PE-X0 Profil * |
#1 · Zasláno: 16. 1. 2010, 12:08:48
Ahoj, mám kód pro nahrávání
function NahraniSouboru() { $JmenoSouboru = ($_FILES["soubor"]["name"]); $Soubor = ($_FILES["soubor"]["tmp_name"]); $Ok = ($_POST["ok"]); if ($Ok == "Upload" && $JmenoSouboru!="") { if (move_uploaded_file($Soubor, "ulozna/$JmenoSouboru")) { /* chmod ("./$JmenoSouboru", 0777); */ // v případě problémů echo "Soubor <b>$JmenoSouboru</b> byl úspěšně nahrán na server.<BR>"; } else { echo "<b>Chyba - soubor nebyl nahrán.</b><BR>"; } } } ale potřebuji, aby se nesměl nahrávat soubor s jakoukoliv nebezpečnou (pro server) koncovkou. Tudiž, zamezit: .php, .asp, .html(radši taky) ,.exe, .phtml, .css atd... nevíte jak to udělat? |
||
mckay Profil |
#2 · Zasláno: 16. 1. 2010, 12:28:39
PE-X0:
Teoreticky by si mohl všechny nahrávané soubory komprimovat nějakou komprimační funkcí, tak, aby se dali stahovat zazipované. |
||
Step Profil |
#3 · Zasláno: 16. 1. 2010, 12:30:28
$_FILES['soubor']['type'] nevim jestli $_FILES["soubor"]["name"] potom stačí udělat $soubor = $_FILES["soubor"]["name"].".".$_FILES["soubor"]["type"]; nakonec bych udělal pole se zakázanými koncovkami $zakazena = array("php", "asp",...) in_array($_FILES["soubor"]["type"], $zakazane); doufám že to neni blbost, poižívám něco podobného tak jsem to trochu přeformuloval. |
||
PE-X0 Profil * |
#4 · Zasláno: 16. 1. 2010, 12:39:13
function NahraniSouboru() { $JmenoSouboru = ($_FILES["soubor"]["name"]); $Soubor = $_FILES["soubor"]["name"].".".$_FILES["soubor"]["type"]; $Ok = ($_POST["ok"]); $Zakazene = array("php", "asp" , "xhtml" , "html" , "exe" , "phtml" , "php4" , "php3" , "phps" , "css" , "xhtml" , "js" , "dhtml" , "sql") if ($Ok == "Upload" && $JmenoSouboru!="") { in_array($_FILES["soubor"]["type"], $Zakazane); if (move_uploaded_file($Soubor, "ulozna/$JmenoSouboru")) { /* chmod ("./$JmenoSouboru", 0777); */ // v případě problémů echo "Soubor <b>$JmenoSouboru</b> byl úspěšně nahrán na server.<BR>"; } else { echo "<b>Chyba - soubor nebyl nahrán.</b><BR>"; } } } nevim jak přesně myslíš to in_array... zatim jsem to sepsal takhle... |
||
PE-X0 Profil * |
#5 · Zasláno: 16. 1. 2010, 12:54:49
sorry, špatný kod
function NahraniSouboru() { $JmenoSouboru = ($_FILES["soubor"]["name"]); $Soubor = $_FILES["soubor"]["name"].".".$_FILES["soubor"]["type"]; $Ok = ($_POST["ok"]); $Zakazene = array("php", "asp" , "xhtml" , "html" , "exe" , "phtml" , "php4" , "php3" , "phps" , "css" , "xhtml" , "js" , "dhtml" , "sql") if ($Ok == "Upload" && $JmenoSouboru!="") { if( in_array($_FILES["soubor"]["type"], $Zakazane)) echo 'Chyba: Nesprávná přípona'; } { if (move_uploaded_file($Soubor, "ulozna/$JmenoSouboru")) { /* chmod ("./$JmenoSouboru", 0777); */ // v případě problémů echo "Soubor <b>$JmenoSouboru</b> byl úspěšně nahrán na server.<BR>"; } else { echo "<b>Chyba - soubor nebyl nahrán.</b><BR>"; } } } takhle jsem to myslel, ale nefunguje |
||
PE-X0 Profil * |
#6 · Zasláno: 16. 1. 2010, 13:00:04
Warning: in_array() [function.in-array]: Wrong datatype for second argument in /users/zalohovane/linhart/milankubik.info/Function.php on line 2623
Chyba - soubor nebyl nahrán. tohle to teď píše... |
||
Step Profil |
#7 · Zasláno: 16. 1. 2010, 13:20:56 · Upravil/a: Step
radek 10 ...$Zakazene a radek 15 ...$Zakazane :-)
jo a zkus používat edit, bude to potom o něco přehlednější |
||
fajzen Profil |
#8 · Zasláno: 16. 1. 2010, 13:30:49
Step:
vo $_FILES["soubor"]["type"] sa neukladá priamo koncovka súboru, ale mime type súboru (napr. image/gif), okrem toho záleží na prehliadači, či tento mime type pošle a v akej podobe (v staršej Opere som mal problém, že posielala trochu iný text mime typu, takže súbor neprešiel kontrolou...) koncovku súboru treba vybrať z názvu súboru vo $_FILES["soubor"]["name"] |
||
PE-X0 Profil * |
#9 · Zasláno: 16. 1. 2010, 13:32:49
function NahraniSouboru() { if ($_POST["ok"] == "Upload"){ $zakazene = array("php", "asp" , "xhtml" , "html" , "exe" , "phtml" , "php4" , "php3" , "phps" , "css" , "xhtml" , "js" , "dhtml" , "sql"); if( in_array(preg_replace("~^.*\.([^.]+)$~", '$1', $_FILES["soubor"]["name"]), $zakazane)){ echo 'Nesprávný typ souboru!<br>'; } else { if( !is_writable('./ulozna') ){ echo "Úložna není zapisovatelná!<br>"; } else { if( move_uploaded_file($_FILES["soubor"]["tmp_name"], "./ulozna/".$_FILES["soubor"]["name"]) ){ /* chmod ("./$JmenoSouboru", 0777); */ // v případě problémů echo "Soubor <b>".$_FILES["soubor"]["name"]."</b> byl úspěšně nahrán na server.<br>"; } else { echo "<b>Chyba - soubor nebyl nahrán.</b><br>"; } } } } } |
||
Časová prodleva: 14 let
|
0