Ajattelin tehdä kunnollisen, yksinkertaisen ja pienen uploadin, joka kuitenkin toimii kunnolla ja ei sisällä tietoturva -aukkoja. Jos kuitenkin löydätte niitä, kertokaa ja korjaan heti.
**Asennus**
$sallitut = Sallitut tiedostopäätteet
$kohde = Kansio, johon kuvat siirretään. Esim: "upload/"
$url = Kansio ja sen URL. Esim. "http://www.sivuni.com/upload/"
$koko = Kuvan koko kilotavuina (1024 = 1 megatavu)
$tiednimi = Tämän tiedoston nimi
------
Tällä hetkellä se näytää kuvan, jonka olet ladannut.
Jos laitat ladattavaksi muitakin kuin kuvia, suosittelen ottamaan sen pois. (Ota myös BBCODE pois jos et tarvitse)
------
<?php #################################################### # Quirzon Upload -skripti # # Versionumero:1.0 # #################################################### # Päivitykset # # -23.12.2006 Aloitettu skriptin tekeminen # # -27.12.2006 Julkaistu ohjelmointiputkassa # #################################################### //Asetukset $sallitut = array("jpg","png","bmp","gif","jpeg"); //Sallitut tiedostomuodot $kohde = "upload/"; //Kansio, johon tiedostot tallennetaan $url = "http://www.sivuni.com/upload/"; //Kansio, johon tiedostot tallennetaan. Koko URL -osoite (MUISTA KAUTTAVIIVA LOPPUUN) $koko = "1024"; //Koko kilotavuina (kt) [Yksi megatavu on 1024 kilotavua!] $tiednimi = "upload.php"; //Tämän tiedoston nimi //Älä koske tähän koodiin, ellet osaa php -ohjelmointikieltä. (Alempanana on muokattavaa) $koko2 = $koko * 1024; if(isset($_POST['StartUpload'])){ if($_FILES["file"]["name"] == ""){ Error("Ei tiedostoa!"); } //Tarkistetaan tiedoston koko if($_FILES["file"]["size"] > $koko2){ $tiedkoko = round($_FILES["file"]["size"] / 1024,2); Error("Tiedosto on liian suuri!<br/>Suurin sallittu koko : $koko kt<br/>Tiedostosi koko : $tiedkoko kt"); } //Tarkistetaan pääte $temp = explode(".",$_FILES["file"]["name"]); $maara = count($temp) - 1; if(!in_array(strtolower($temp[$maara]),$sallitut)){ Error("Tiedoston pääte ei ole sallittu. Kokeile tallentaa tiedosto eri muotoon<br/><u>Päätteesi oli .$temp[$maara]"); } //Kun kaikki on tarkistettu ja ei virheitä, tarkastetaan tiedoston olemassaolo $nimi = $_FILES["file"]["name"]; while(file_exists($kohde.$nimi)); { $nimi = rand(100,900).$_FILES["file"]["name"]; } //Siirretään tiedosto sijaintiin move_uploaded_file($_FILES['file']['tmp_name'], $kohde.$nimi); chmod($kohde.$nimi,0755); //Tässä on sivun koodi, joka näkyy kun on uploadattu //[MUOKKAA, JOS HALUAT] echo' <h3>Kuva on nyt siirretty!</h3><br/> <form name="formi"> <b><u>Kuvan URL -osoite</u></b><br/> <input type="text" size="60" width="60" value="'.$url.$nimi.'" name="url" onClick="javascript:document.formi.url.focus();document.formi.url.select();" readonly="true"\><br/> <b><u>Kuvan BBCODE -koodi foruumeille</u></b><br/> <input type="text" size="60" width="60" value="[img]'.$url.$nimi.'[/img]" name="bbcode" onClick="javascript:document.formi.bbcode.focus();document.formi.bbcode.select();" readonly="true"/><br/> </form> <a href="'.$kohde.$nimi.'"><img src="'.$kohde.$nimi.'" width="300" alt="Kuvasi"/></a><br/> <a href="'.$tiednimi.'"><--Takaisin</a> '; } else{ //Tässä on sivun koodi, joka näkyy alussa. //[MUOKKAA, JOS HALUAT] echo' <strong>Upload</strong><p> <form enctype="multipart/form-data" name="formi" action="'.$tiednimi.'" method="post"> <input type="file" name="file"> <input type="hidden" name="MAX_FILE_SIZE" value="'.$koko2.'"> <br/> <input type="submit" name="StartUpload" value="Siirrä"> </form> <b>Sallitut tiedostopäätteet</b><br/> '; //Luetellaan sallitut tiedostopäätteet foreach($sallitut as $arvo){ echo "$arvo, "; } } //virheilmoitus -funktio //[MUOKKAA, JOS HALUAT] function Error($msg){ exit('<strong>Siirto keskeytyi virheen takia...</strong><br/> <u>Tietoa virheestä:</u><br/> '.$msg.'<p><small><i>'.$omistaja.'</small></i>'); } ?>
Aihe on jo aika vanha, joten et voi enää vastata siihen.