Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Upload

Quirzo [27.12.2006 11:31:53]

#

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>');
	}
?>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta