Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 13 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Upload súborov

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok NapísalOffline : 28.05.2010 22:09

Dobrý večer!
Dnes som sa pokúšal rozchodiť upload súborov a skoro by to aj fungovalo, nebyť dvoch mierne čudných vecí...
Mám toto:
Kód:
<!DOCTYPE HTML public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<style type="text/css">
#obal{background-color:#ddddff; border:2px outset #9999bb; width:70%; margin:50px auto;}
h1{background-color:#bbbbdd; border-top:1px solid #9999bb; padding:7px}
</style>
<body style="background-color:#ddeeee">
<div id="obal">
<?php
if ($_FILES['inputname']['error'] > 0)
   {
    switch ($_FILES['inputname']['error'])
           {
            case 1 : echo"<h1>Subor presiahol maximalnu moznu valkost uploadu!</h1>"; break;
            case 2 : echo"<h1>Subor presiahol velkost MAX_FILE_SIZE!</h1>"; break;
            case 3 : echo"<h1>Subor bol nahraty len ciastocne!</h1>"; break;
            case 4 : echo"<h1>Subor sa nenahral!</h1>"; break;
           }
    exit;
   }
if ($_FILES['inputname']['type']!=('image/gif' or 'image/jpg' or 'image/png'))
   {
    die('<h1>Subor nema pozadovany format!</h1>');
   }
$place='./'.$_FILES['inputname']['name'];

if (is_uploaded_file($_FILES['inputname']['tmp_name']))
   {
    if (!move_uploaded_file($_FILES['inputname']['tmp_name'], $place))
       {
        die('<h1>Subor nieje mozne premiestnit do cieloveho adresara!</h1>');
       }
   }
else { die('<h1>Mozny utok, script skonci!</h1>');
     }

echo "<h1>Subor bol uspesne nahraty!</h1>";

?>
</div>
</body>
</html>


Prvý problém je v tomto riadku(asi):
Kód:
if ($_FILES['inputname']['type']!=('image/gif' or 'image/jpg' or 'image/png'))

Niekde tam musím mať chybu, lebo mi to zožerie aj kadejaké iné súbory, než sú tam vymenované. Keď je tam len jedna možnosť(bez toho or), tak to funguje a filtruje v pohode.

Druhý problém mám s týmto riadkom:
Kód:
$place='./'.$_FILES['inputname']['name'];

Ako mám správne zapísať aktuálny adresár? Niekedy mi to totiž capne uploadovaný súbor úplne mimo a nie do aktuálneho adresára(tam kde je script). Keď tam zadám miesto "./" toto "TEST/" tak funguje v pohode. Čo to je s tým "./" ??

Neviete čo s tým?


Offline

Čestný člen
Čestný člen
Upload súborov

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 29.05.2010 9:21

1. Podmienka je zle, navyse tvoja zatvorkova syntax je zla.
Kód:
if ($_FILES['inputname']['type'] != 'image/gif' and $_FILES['inputname']['type'] != 'image/jpg' and $_FILES['inputname']['type'] != 'image/png')
//alebo lepsie
if (!in_array($_FILES['inputname']['type'], array('image/gif', 'image/jpg', 'image/png'))

Okrem toho, MIME typ jpg obrazku je image/jpeg.
2. "./" znamena aktualny adresar, je to dobre.


Offline

Užívateľ
Užívateľ
Upload súborov

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 29.05.2010 11:21

Nechápem...
Veď "and" znamená "a zároveň" predsa?
Ako môže byť nejaký mime typ zároveň gif aj jepg?

To array hádam aj chápem, ale môže mať to array aj meno, že ano? Teda, že by som ho pre poriadok definoval pred tým a dal mu meno....

EDIT:
No už to and chápem. Len si oprav ten jepg :D

Ešte ma napadá, či overovanie tých mime typov je case sensitive?


Offline

Čestný člen
Čestný člen
Upload súborov

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 29.05.2010 11:27

Moze mat aj meno.
Ja nemam jepg nikde, ja som napisal jpeg a tak to ma byt spravne, image/jpg neexistuje. Overovanie mime typov samozrejme nie je case sensitive, len porovnavas klasicke retazce.
Inak tvoja kontrola je riadne derava. Odporucam http://blackhole.sk/topicupload-suborov ... if-obrazky


Offline

Užívateľ
Užívateľ
Upload súborov

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 29.05.2010 11:35

Tak teda jpeg a nie jepg?! :)
To nieje kontrola pre verejné uploadovanie. Len hrubé chyby.... Útok sa nepredpokladá... To, že to nestačí, som sa samozrejme dočítal....
Vďaka moc!!!


Offline

Čestný člen
Čestný člen
Upload súborov

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 29.05.2010 11:39

Ano, image/jpeg. Nevidim, ze by som niekde napisal jepg.


Offline

Užívateľ
Užívateľ
Upload súborov

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 29.05.2010 11:44

Vy ste majstre napísali image/jpg. A to viac krát za sebou. Napriek výslovnému upozorneniu zo strany moderátora. :D


Offline

Užívateľ
Užívateľ
Upload súborov

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 29.05.2010 13:27

No tak som tu zas...
Skúšam ten script rozšíriť, aby vedel spracovať viac súborov, a aj by to fungovalo, ale robí to jednu divnú vec.
K tomu prvému scriptu som pripojil cyklus while a nejaké drobnosti... no a ten while mi robí problémy. Podĺa mńa, ak while vyhodnotí výraz v zátvorke ako false, tak by mal skončiť. Lenže tento môj mi okrem toho vypíše takúto hlášku: Notice: Undefined index: input3 in C:\PHPWebServer\http_docs\upload.php on line 12 (Teda keď nahrávam dva súbory a testuje, či existuje tretí). Nechápem prečo to robí? :?
Script teraz vyzerá takto:
Kód:
<!DOCTYPE HTML public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<style type="text/css">
#obal{background-color:#bbbbee; border:2px outset #9999bb; width:70%; margin:50px auto;}
h1{background-color:#ddddff; border-top:1px solid #9999bb; padding:7px}
#RED{color:red}
</style>
<body style="background-color:#ddeeee">
<div id="obal">
<?php
$globalka=1;
while(is_uploaded_file($_FILES['input'.$globalka]['tmp_name']))
{
$input='input'.$globalka;
if ($_FILES[$input]['error'] > 0)
   {
    switch ($_FILES[$input]['error'])
           {
            case 1 : echo"<h1>Subor presiahol maximalnu moznu valkost uploadu!</h1>"; break;
            case 2 : echo"<h1>Subor presiahol velkost MAX_FILE_SIZE!</h1>"; break;
            case 3 : echo"<h1>Subor bol nahraty len ciastocne!</h1>"; break;
            case 4 : echo"<h1>Subor sa nenahral!</h1>"; break;
           }
    $globalka++; continue;
   }
if (!in_array($_FILES[$input]['type'], array('image/gif', 'image/jpeg', 'image/png')))
   {
    echo('<h1>Subor <span id="RED">'.$_FILES[$input]['name'].'</span> nema pozadovany format!</h1>');
    $globalka++; continue;
   }
$place='./'.$_FILES[$input]['name'];

if (is_uploaded_file($_FILES[$input]['tmp_name']))
   {
    if (!move_uploaded_file($_FILES[$input]['tmp_name'], $place))
       {
        echo'<h1>Subor nieje mozne premiestnit do cieloveho adresara!</h1>';
        $globalka++; continue;
       }
   }
else { die('<h1>Mozny utok, script preto konci!</h1>');
     }
$globalka++;
echo "<h1>Subor ".$_FILES[$input]['name']." bol uspesne nahraty!</h1>";
}
?>
</div>
</body>
</html>


Offline

Čestný člen
Čestný člen
Upload súborov

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 29.05.2010 13:46

Ano, ved aj to tak funguje, ale ty nikde neoverujes, ci existuje $_FILES['input3']['tmp_name']. Ty sa snazis pouzit tuto neexistujucu premennu ako parameter fcie. Kedze neexistuje, vyhodi sa chyba a ako parameter fcie is_uploaded_file sa pouzije null, pricom is_uploaded_file(null) uz neprejde a preto cyklus nepokracuje. Toto staci:
Kód:
while(isset($_FILES['input'.$globalka]))


Offline

Užívateľ
Užívateľ
Upload súborov

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 29.05.2010 14:09

No dobre, ale funkcia is_uploaded_file() s neplatným parametrom, by mala vracať false, ako som sa dočítal a preto som ju tam dal... Čo iné tá funkcia testuje ak nie existenciu uploadnutého súboru?? Či ako?? :loony:
Môžeš mi to nejako ozrejmiť? Rád by som to pochopil s tým is_uploaded_file()..., než prejdem na to druhé riešenie.


Offline

Čestný člen
Čestný člen
Upload súborov

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 29.05.2010 14:12

No vsak aj vracia false. Ono ten cyklus vobec neprebieha, tebe tu chybu vracia na riadku s podmienkou, ktora sa otestovat musi, aby sa vedelo, ci cyklus prebiehat ma alebo nie.


Offline

Užívateľ
Užívateľ
Upload súborov

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 29.05.2010 14:40

Už hádam chápem. Nerozumel som dobre že ona fcia testuje: if the file named by filename was uploaded via HTTP POST.a nie či exituje daná premenná a musí teda dostať platný parameter....

UF! :-)
Zdá sa, že to funguje. Ešte som síce nevyskúšal všetky nemožné kombinácie, ale v hrubom to funguje.
Vďaka za pomoc.


Offline

Užívateľ
Užívateľ
Upload súborov

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 19.08.2010 19:38

****************************************************************************************************************************
****************************************************************************************************************************


Zdravím!
Nechcem zakladať novú tému, lebo to patrí k tomuto...
Chcem sa niekoho kto tomu dobre rozumie a chce sa mu to čítať, spýtať, či takýto script na upload môže ísť na verejnosť(či môže byť verejne prístupný).
K tomu predošlému som doplnil to čo som našiel na black hole. Tj. kontrolu cez getimagesize() a kontrolu prípony. Trochu som to osekal o nejaké moje doplnky, len dúfam, že podstata ostala celá...
Kód:
<html>
<body style="background-color:#ddeeee; font-family:tahoma">
<div id="obal">

<?php
$globalka=1;
while(isset($_FILES['input'.$globalka]))
{
$input='input'.$globalka;
if ($_FILES[$input]['error'] > 0)
   {
    switch ($_FILES[$input]['error'])
           {
            case 1 : echo"<h1>Subor presiahol maximalnu moznu valkost uploadu!</h1>"; break;
            case 2 : echo"<h1>Subor presiahol velkost MAX_FILE_SIZE!</h1>"; break;
            case 3 : echo"<h1>Subor bol nahraty len ciastocne!</h1>"; break;
            case 4 : echo"<h1>Subor sa nenahral!</h1>"; break;
           }
    $globalka++; continue;
   }
//kontrola pripony
$whitelist_suffix= array('.gif','.jpg','.jpeg','.png');
$trueORfalse='false';
foreach($whitelist_suffix as $itemsuff)
       {
        if (preg_match("/$itemsuff\$/i", $_FILES[$input]['name'])) $trueORfalse='true';
       }
if ($trueORfalse != 'true')
    {
     echo '<h1>Subor <span class="RED">'.$_FILES[$input]['name'].'</span> nema pozadovanu priponu!</h1>';
     $globalka++; continue;
    }
//kontrola mime typu cez fciu getimagesize()
$whitelist_mime= array('image/gif','image/jpeg','image/png');
$array_gis= getimagesize($_FILES[$input]['tmp_name']);
if (!in_array ($array_gis['mime'], $whitelist_mime))
   {
    echo('<h1>Subor <span class="RED">'.$_FILES[$input]['name'].'</span> nema pozadovany format!</h1>');
    $globalka++; continue;
   }
//upload
$place='./'.$_FILES[$input]['name'];
if (is_uploaded_file($_FILES[$input]['tmp_name']))
   {
    if (!move_uploaded_file($_FILES[$input]['tmp_name'], $place))
       {
        echo'<h1>Subor nieje mozne premiestnit do cieloveho adresara!</h1>';
        $globalka++; continue;
       }
   }
else {
        die('<h1>Mozny utok, script preto konci!</h1>');
     }
$globalka++;
echo "<h1>Subor ".$_FILES[$input]['name']." bol uspesne nahraty!</h1>";
}
?>
<a href="UploadForm76UF.php"><b>Nahrať ďalšie</b></a>
<hr style="clear:left; color:#bbbbbb">
</div>
</body>
</html>


Odpovedať na tému [ Príspevkov: 13 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Upload súborov

v PHP, ASP

1

407

23.02.2015 10:06

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. upload suborov-uprava

v PHP, ASP

10

781

01.08.2010 20:14

rover218 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Upload suborov - princip

v PHP, ASP

7

1114

04.02.2009 12:09

Blackdevil Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. upload suborov na server

v Ostatné

1

1243

28.01.2006 10:54

2010 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Upload suborov do MySQL

v Databázy

2

548

18.12.2011 19:33

lukas15 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Upload súborov v Mediawiki

v Redakčné systémy

0

499

21.10.2007 13:27

p360t Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Upload iba PHP súborov

v PHP, ASP

4

733

02.09.2009 20:56

Wicky Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. upload suborov na stránku

v Webhosting a servery

2

320

05.07.2013 0:35

SnakeBack Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako na upload velkych suborov

v PHP, ASP

2

1032

24.07.2009 16:54

jozef.rusnak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. upload suborov na inu domenu

v PHP, ASP

1

500

15.11.2010 20:14

sedlák Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nefunguje mi script na upload suborov

v PHP, ASP

9

719

22.02.2008 20:44

vl4kn0 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Upload 2 suborov do 2 dirov (pomoc)

v PHP, ASP

2

378

27.12.2009 14:00

rEnEeK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako pridat zopar suborov do image *.nrg suborov?

v Ostatné programy

7

1275

30.08.2007 12:33

paulix Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. upload

v Bezpečnosť a firewally

6

544

13.07.2011 14:56

fifo102 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Upload

v Ostatné programy

4

930

27.01.2007 13:58

quatermain Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. upload

v PHP, ASP

7

724

30.04.2009 21:02

Draex Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra