Stránka: 1 z 1
| [ Príspevkov: 26 ] | |
Autor | Správa |
---|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
subor kontrola.php
Kód: <form enctype="multipart/form-data" action="upload.php" method="post"> Image1: <input name="userfile[]" type="file" /><br /> Image2: <input name="userfile[]" type="file" /><br /> Image3: <input name="userfile[]" type="file" /><br /> <input type="submit" value="Upload" /> </form> [/code] subor upload.php Kód: <?php $MAX_SIZE = 100000;
if ($_POST["podmienka"]==false) { echo "musíte suhlasiť s licenčným podmienkami"; } else {
$success = 0; $fail = 0; $dobra_velkost=0; if (!empty($_POST['folder'])) mkdir($_POST['folder'], 0777);
for ($i=0;$i<50;$i++;) {
if ( $_FILES['userfile']['size'] > $MAX_SIZE) {echo "je to velke";} else {$dobra_velkost++;}
if($_FILES['userfile']['name'][$i]) { $uploadfile = $_POST['folder'].'/'. basename($_FILES['userfile']['name'][$i]);
$ext = strtolower(substr($uploadfile,strlen($uploadfile)-3,3)); if (preg_match("/(jpg|gif|png|bmp)/",$ext)) { if (move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile)) { $success++; } else { echo "Error Uploading the file. Retry after sometime.\n"; $fail++; } } else { $fail++; } } } }
echo "<br> Number of files Uploaded:".$success; echo "<br> Number of files Failed:".$fail; ?>
Mam k tomu dve otazky:
prečo mi nefunguje počitadlo suborov, ktore maju dobru velkosť
ako zistim, že či zadavaný priečinok už existuje
za odpoved vam budem velmi vdačny
|
|
Registrovaný: 26.07.06 Prihlásený: 20.03.16 Príspevky: 1378 Témy: 90 | 90 Bydlisko: Slovakia-Ko... |
mam taky pocit ze tam sa velkost nepocita ako velkost suboru ale ako velkost vsetkych suborou
//ale neisom isty
_________________ CPU: Intel E7200 momentalne default + freezer 7 pro | MB: Gigabyte GA-P35-DS3 rev. 2.0 F14 | RAM: A-DATA 4x1GB EE Vitesta | VGA: ATI Radeon HD4850 Sapphire Dual Slot | Monitor: BenQ E2200HD+17CTX | HDD: WD 3200AAKS + Maxtor 6Y080M0 80GB SATAII + 120GB ATA Barracuda | PSU: Corsair VX450W | Windows 7 Ultimate Sk | REPRO: Logitech X-210
+
IPhone 3GS JB 3.1.3 (new BR)
múdry sa postara o seba ale ešte múdrejši sa postara aj o druhých |
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 | 37 Bydlisko: BegyBen |
Nedal si cely skript, kde je $_POST["podmienka"] a $_POST['folder'] ?
Ked vytvaras priecinok oplati sa davat aj chmod
Tvoje skipty typu {$dobra_velkost++;} su dost neprehladne.
Na taketo veci nepozivaj for ale foreach.
for ($i=0;$i<50;$i++;) ???
Aj ked som ti dal overovanie pomocou ['type'] nespoliehaj sa na to. Dobru diskusiu najdes
TU.
Taktiez nezabudaj na osetrenie vstupov a bezpecnost.
Citácia: prečo mi nefunguje počitadlo suborov, ktore maju dobru velkosť Pretoze cely tvoj up-load suborov je nanic Citácia: ako zistim, že či zadavaný priečinok už existuje
Pomocou fkcie file_exists, ktora ti vrati booleanovsku true v pripade ze priecinok existuje alebo false vpripade ze neexistuje. Viac najdes TU
skus takto:
Kód: <form enctype="multipart/form-data" action="#" method="post"> Image1: <input name="userfile[]" type="file" /><br /> Image2: <input name="userfile[]" type="file" /><br /> Image3: <input name="userfile[]" type="file" /><br /> <input type="submit" name="upload" value="Upload" /> </form>
<?php if(isset($_POST['upload'])){ mkdir($_POST['folder'], 0777); chmod($_POST['folder'], 0777); foreach($_FILES['userfile']['name'] as $key => $name) { $file_name[$key] = $name; $tmp_pole[$key] = $_FILES['userfile']['tmp_name'][$key]; $size_pole[$key] = $_FILES['userfile']['size'][$key]; $type_pole[$key] = $_FILES['userfile']['type'][$key];
if(!($file_name[$key] == "")){
$max_filesize = 1000; $types_array = array('image/jpg','image/jpeg','image/JPG','image/JPEG','image/pjpeg','image/PJPEG');
if($size_pole[$key] > $max_filesize) { echo "Chyba: Obrázok <strong>".$file_name[$key]."</strong> je príliž veľký!<br />"; continue; } else if(!(in_array($type_pole[$key], $types_array))) { echo "Chyba: Obrázok <strong>".$file_name[$key]."</strong> má zlá formát!"; continue; } else { $result = copy($tmp_pole[$key],$_POST['folder'].'/'.$file_name[$key]); } } # koniec IF } # koniec FOREACH } # koniec IF ?>
Dufam, ze som nespravil chybu
|
|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
diky, chybu si nespravil
Kód: <form enctype="multipart/form-data" action="#" method="post"> udalost: <input type="text" name="folder"><br /> Image1: <input name="userfile[]" type="file" /><br /> Image2: <input name="userfile[]" type="file" /><br /> Image3: <input name="userfile[]" type="file" /><br /> <input type="submit" name="upload" value="Upload" /> </form>
<?php if(isset($_POST['upload'])){ mkdir($_POST['folder'], 0777); chmod($_POST['folder'], 0777); foreach($_FILES['userfile']['name'] as $key => $name) { $file_name[$key] = $name; $tmp_pole[$key] = $_FILES['userfile']['tmp_name'][$key]; $size_pole[$key] = $_FILES['userfile']['size'][$key]; $type_pole[$key] = $_FILES['userfile']['type'][$key];
if(!($file_name[$key] == "")){
$max_filesize = 102400; $types_array = array('image/jpg','image/jpeg','image/JPG','image/JPEG','image/pjpeg','image/PJPEG');
if($size_pole[$key] > $max_filesize) { echo "Chyba: Obrázok <strong>".$file_name[$key]."</strong> je príliž veľký!<br />"; continue; } else if(!(in_array($type_pole[$key], $types_array))) { echo "Chyba: Obrázok <strong>".$file_name[$key]."</strong> má zlá formát!"; continue; } else { $result = copy($tmp_pole[$key],$_POST['folder'].'/'.$file_name[$key]); } } # koniec IF } # koniec FOREACH } # koniec IF ?> len tam nemôžem mať funkciu copy Kód: Warning: copy eval imap_open session_save_path() has been disabled for security reasons in
nedalo by sa to pomocou move_uploaded_file ?
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 | 37 Bydlisko: BegyBen |
Samozrejme dalo, ved len nahradis funkciu copy tou hore co si mal povodne
|
|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
dakujem, ide to super, ale vstupy tam asi nie su ošetrene však?
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 | 37 Bydlisko: BegyBen |
vstupy nie, neviem ci si urcujes vytvaranie priecinku ty alebo uzivatel ak uzivatel tak aj to musis osetrit. Pri osetreni vstupu sa skor zameraj na koncovku (najlepsie obsah suboru) viac najdes TU a TU
|
|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
uzivatel si zadava nazov priečinku, no ale ved tam nie je žiadna pripona
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 | 37 Bydlisko: BegyBen |
Na koncovku sa zameraj pri tych obrazkoch
|
|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
pozeral som tie stránky, čo si mi poslal, ale tak neviem, čo tearz bude lepšie, je to dobre overovať podla toho ? Kód: strtolower(end(explode('.', $filename))); ???
alebo tam čo si mi poslal, to s overovanim xml, no tak tomu som moc nepochopil
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 | 37 Bydlisko: BegyBen |
S tymto
Kód: strtolower(end(explode('.', $string))); si zistis aku ma subor koncovku napr. jpg A pouzijes fciu in_array ktoru tam uz mas, len si tam namiesto napr. image/JPG das koncovky, ktore chces aby boli prijate. in_array pouzijes : in_array($ihla , $seno) Ihlu ziskas : Kód: $ihla = strtolower(end(explode('.', $_FILES['userfile']['name']))); Seno : Kód: $seno = array('jpg','gif,'png'); A pricinky osetri regexom proti metaznakom Kód: \/:*?"<>|
, urci max. dlzku retazca a overuj funkcoiu file_exists ci priecinok uz nahodu neexistuje
|
|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
urobil som to taktko
Kód: <form enctype="multipart/form-data" action="#" method="post"> udalost: <input type="text" name="folder"><br /> Image1: <input name="userfile[]" type="file" /><br /> Image2: <input name="userfile[]" type="file" /><br /> Image3: <input name="userfile[]" type="file" /><br /> Image4: <input name="userfile[]" type="file" /><br /> Image5: <input name="userfile[]" type="file" /><br /> Image6: <input name="userfile[]" type="file" /><br /> Image7: <input name="userfile[]" type="file" /><br /> Image8: <input name="userfile[]" type="file" /><br /> Image9: <input name="userfile[]" type="file" /><br /> <input type="submit" name="upload" value="Upload" /> </form>
<?php if(isset($_POST['upload'])){ mkdir($_POST['folder'], 0777); chmod($_POST['folder'], 0777); foreach($_FILES['userfile']['name'] as $key => $name) { $file_name[$key] = $name; $tmp_pole[$key] = $_FILES['userfile']['tmp_name'][$key]; $size_pole[$key] = $_FILES['userfile']['size'][$key]; $type_pole[$key] = $_FILES['userfile']['type'][$key];
if(!($file_name[$key] == "")){
$max_filesize = 102400; $ihla = strtolower(end(explode('.', $_FILES['userfile']['name']))); $seno = array('jpg','gif','png');
if($size_pole[$key] > $max_filesize) { echo "Chyba: Obrázok <strong>".$file_name[$key]."</strong> je príliž veľký!<br />"; continue; } else if(!(in_array($ihla , $seno))) { echo "Chyba: Obrázok <strong>".$file_name[$key]."</strong> má zlý formát!"; continue; } else { $result = move_uploaded_file($tmp_pole[$key],$_POST['folder'].'/'.$file_name[$key]); } } # koniec IF } # koniec FOREACH } # koniec IF ?>
neviem, či to malo byť tak, ako som to tam dal, ale teraz mi to stale piše, že zly format
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 | 37 Bydlisko: BegyBen |
tu ihlu zmen napr. za
Kód: $ihla = strtolower(end(explode('.', $file_name[$key])));
|
|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
dakujem, už to všetko ide,
|
|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
akurat ešte potrebujem tam dať, či vytvarany priečinok, už neexistuje
|
|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
Snacker píše: A pricinky osetri regexom proti metaznakom Kód: \/:*?"<>| , urci max. dlzku retazca a overuj funkcoiu file_exists ci priecinok uz nahodu neexistuje
robil už niekto s regexom? nejako nemôžem nikde najsť syntax ako na to
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 | 37 Bydlisko: BegyBen |
tak za Kód: if(isset($_POST['upload'])){ vloz podmienku, kde budes overovat regexom ci ma priecinok regularny nazov a ci uz nahodou neexistuje fciou file_exists. Alebo si vytvor funkiu ktora ti to bude overovat. Kód: function IsValidFolder($folder){ if(file_exists($folder)) // ak mas nejaku cestu ku prieciku tak ju tam daj return FALSE; // + podmienka s regexom... tu si uz snad napises return FALSE;
return TRUE; }
no a potom do toho tvojho skriptu das len
if(IsValidFolder($co_chces_overit))
a ak vrati true skript bude pokracovat ,ak nie(esle) mozes tak napisat hlasku typu : Vas zvoleny priecinok nie je regularny alebo sa uz pouziva
|
|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
teraz asi už budem fakt vyzerať hlupo, ale fakt nikde nemôžem najsť ako sa zapisuje regex
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 | 37 Bydlisko: BegyBen |
Asi bude lepsie ked upradnostnis whitelist pred blacklistom. Dobru stranku najdes TU
Ak chces napr. povolit vsetky pismena bez diakritiky, cisla,povolit min.4 max 30 znakov + povolit nejaku interpunkciu spravis to nasledovne
Kód: if(!preg_match("/^[a-zA-Z0-9_.-]{4,30}$/", $string) == 1) return FALSE; teda funkcia bude vyzerat: Kód: function IsValidFolder($folder){ if(file_exists($folder)) // ak mas nejaku cestu ku prieciku tak ju tam daj return FALSE; if(!preg_match("/^[a-zA-Z0-9_.-]{4,30}$/", $string) == 1) return FALSE;
return TRUE; }
|
|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
a nevracia ta podmienka nahodou stale TRUE?
zapisal som to takto
Kód: <form enctype="multipart/form-data" action="#" method="post"> udalost: <input type="text" name="folder"><br /> Image1: <input name="userfile[]" type="file" /><br /> Image2: <input name="userfile[]" type="file" /><br /> Image3: <input name="userfile[]" type="file" /><br /> Image4: <input name="userfile[]" type="file" /><br /> Image5: <input name="userfile[]" type="file" /><br /> Image6: <input name="userfile[]" type="file" /><br /> Image7: <input name="userfile[]" type="file" /><br /> Image8: <input name="userfile[]" type="file" /><br /> Image9: <input name="userfile[]" type="file" /><br /> <input type="submit" name="upload" value="Upload" /> </form>
<?php
if(isset($_POST['upload'])){ function IsValidFolder($folder){
if(file_exists($folder)) return FALSE; if(!preg_match("/^[a-zA-Z0-9_.-]{4,30}$/", $string) == 1) return FALSE;
return TRUE; } mkdir($_POST['folder'], 0777); chmod($_POST['folder'], 0777); foreach($_FILES['userfile']['name'] as $key => $name) { $file_name[$key] = $name; $tmp_pole[$key] = $_FILES['userfile']['tmp_name'][$key]; $size_pole[$key] = $_FILES['userfile']['size'][$key]; $type_pole[$key] = $_FILES['userfile']['type'][$key];
if(!($file_name[$key] == "")){
$max_filesize = 102400; $ihla = strtolower(end(explode('.', $file_name[$key]))); $seno = array('jpg','png');
if($size_pole[$key] > $max_filesize) { echo "Chyba: Obrázok <strong>".$file_name[$key]."</strong> je príliž veľký!<br />"; continue; } else if(!(in_array($ihla , $seno))) { echo "Chyba: Obrázok <strong>".$file_name[$key]."</strong> má zlý formát!"; continue; } else { $result = move_uploaded_file($tmp_pole[$key],$_POST['folder'].'/'.$file_name[$key]); } } # koniec IF } # koniec FOREACH } # koniec IF ?>
snad som to dobre pochopil, ale skôr asi nie, lebo mi to berie všetky znaky,
tak neviem, kde som urobil chybu, a kam mam dať tu hlašku, že priečinok s takym nazvom už bol vytvoreny?
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 | 37 Bydlisko: BegyBen |
OMG.. ty asi nemas zaklady z programovania
Kód: <?php function IsValidFolder($folder){ if(file_exists($folder)) return FALSE; if(!preg_match("/^[a-zA-Z0-9_.-]{4,30}$/", $folder) == 1) return FALSE;
return TRUE; } ?> <form enctype="multipart/form-data" action="#" method="post"> udalost: <input type="text" name="folder"><br /> Image1: <input name="userfile[]" type="file" /><br /> Image2: <input name="userfile[]" type="file" /><br /> Image3: <input name="userfile[]" type="file" /><br /> Image4: <input name="userfile[]" type="file" /><br /> Image5: <input name="userfile[]" type="file" /><br /> Image6: <input name="userfile[]" type="file" /><br /> Image7: <input name="userfile[]" type="file" /><br /> Image8: <input name="userfile[]" type="file" /><br /> Image9: <input name="userfile[]" type="file" /><br /> <input type="submit" name="upload" value="Upload" /> </form> <?php if(isset($_POST['upload'])){
if(IsValidFolder($_POST['folder'])) {
mkdir($_POST['folder'], 0777); chmod($_POST['folder'], 0777); foreach($_FILES['userfile']['name'] as $key => $name) { $file_name[$key] = $name; $tmp_pole[$key] = $_FILES['userfile']['tmp_name'][$key]; $size_pole[$key] = $_FILES['userfile']['size'][$key]; $type_pole[$key] = $_FILES['userfile']['type'][$key];
if(!($file_name[$key] == "")){
$max_filesize = 102400; $ihla = strtolower(end(explode('.', $file_name[$key]))); $seno = array('jpg','png');
if($size_pole[$key] > $max_filesize) { echo "Chyba: Obrázok <strong>".$file_name[$key]."</strong> je príliž veľký!<br />"; continue; } else if(!(in_array($ihla , $seno))) { echo "Chyba: Obrázok <strong>".$file_name[$key]."</strong> má zlý formát!"; continue; } else { $result = move_uploaded_file($tmp_pole[$key],$_POST['folder'].'/'.$file_name[$key]); } } # koniec IF } # koniec FOREACH } # koniec IF IsValidFolder else echo "Vas zvoleny priecinok nie je regularny alebo sa uz pouziva"; } # koniec IF ?>
|
|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
ako by som to mal upraviť, keby som chcel, žeby mi tie priečinky vytvaralo v zložke upload
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 | 37 Bydlisko: BegyBen |
Zmenis
Kód: mkdir("upload/".$_POST['folder'], 0777); chmod("upload/".$_POST['folder'], 0777); Kód: $result = move_uploaded_file($tmp_pole[$key],"upload/".$_POST['folder'].'/'.$file_name[$key]);
|
|
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 | |
Registrovaný: 28.07.09 Prihlásený: 18.04.13 Príspevky: 145 Témy: 42 | 42 |
ma to jeden hačik, to overovanie, či už prečinok nahodou neexistuje, nefunguje, asi aj tam treba nastaviť novu cestu upload/..
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 | 37 Bydlisko: BegyBen |
Ano, prehliadol som
Kód: if(file_exists("upload/".$folder))
|
|
Stránka: 1 z 1
| [ Príspevkov: 26 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Sieťové a internetové programy | 5 | 512 | 18.08.2008 1:05 dedko45 | | v Databázy | 16 | 1842 | 26.01.2009 9:17 myxall | | v Video programy | 3 | 783 | 19.03.2007 23:29 Jaro | | v PHP, ASP | 6 | 467 | 10.04.2010 20:05 sedlák | | v Assembler, C, C++, Pascal, Java | 8 | 909 | 14.11.2013 15:57 erik518 | | v Siete | 1 | 376 | 16.12.2017 21:36 ado130 | | v PHP, ASP | 1 | 508 | 22.11.2010 23:27 stenley | | v Technológia .NET | 2 | 440 | 22.02.2017 14:31 GamerSK | | v JavaScript, VBScript, Ajax | 2 | 370 | 02.03.2013 14:03 p4tooo | | v PHP, ASP | 2 | 563 | 19.12.2009 18:21 M1rcO_o | | v JavaScript, VBScript, Ajax | 6 | 970 | 01.03.2008 18:35 emer | | v JavaScript, VBScript, Ajax | 3 | 423 | 28.10.2011 11:41 chrono | | v PHP, ASP | 2 | 502 | 02.08.2010 21:32 coldak | | v Databázy | 4 | 1157 | 27.06.2011 6:54 coldak | | v PHP, ASP | 3 | 559 | 11.05.2010 9:55 DeiForm | | v Ostatné | 0 | 572 | 18.12.2018 16:53 iggi9797 |
|