Kjapp og trygg hosting for Wordpress

Image Upload

KSV

New Member
Jess, så kommer jeg med et nytt spørsmål.. he he..

Vel, jeg må få laget en funksjon for å laste opp bilder, ikke noe svært avansert uttseende, bare lite og nett, men fortsatt sikkert, testet å kode dette selv, men endte opp med å bare forvirre meg selv etter hvert.

Etter det testet jeg en rekke script som jeg fant på nettet, men alle hadde forskjellige feil i seg. (filen er for stor, men blir lastet opp likevel osv.)

Er det noen som har en link til et godt fungerende bilde opplastnings script?
 

KSV

New Member
Etter en stund med titting å lesing i forskjellige bøker og koder, endte jeg opp med å kombinere et script selv, fra forskjellige steder.. (og litt justering selv)

er sikkert noe overflødigt på koden, menmen.. orker ikke se mer på dette akkurat nå.. Men for de som vil se resultatet jeg kom med. (og ja.. Designet på den er ikke spesielt pen.. brukte bare <h1>.. hehe)

Koden:
PHP:
<?php
// definerer største størrelsen lovlig på filene ---- I Kb VEL Å MERKE!
 define ("MAX_SIZE","5000"); 

// Denne sjekker endingene på filen, som brukes i å finne ut om filen er "lovlig" eller ikke..
 function getExtension($str) {
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
 } // END FUNCTION

// Om denne blir skrudd til 1, vil filen ikke bli lastet opp.
 $errors=0;
 
// Sjekker om skjamet er blitt sendt.
 if(isset($_POST['Submit'])) 
 {
	 // Finner navnet på filen som brukeren lastet opp.
 	$image = $_FILES['image']['name'];
 	
 	// Om den ikke er tom;
 	if ($image) 
 	{
	 	// Få originalfilen fra filen fra senderens maskin
 		$filename = stripslashes($_FILES['image']['name']);
 		
 		// få endingen i små bokstaver
  		$extension = getExtension($filename);
 		$extension = strtolower($extension);
 		
 		// Sjekker om endingene er noen av de som er tillat, om den ikke har noen av de endingene, vil filen bli avvist.
 		if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
 		{
			// Skriv ut error melding!
 			echo '<h1>Unknown extension!</h1>';
 			$errors = 1;
 		} // END IF 
 		else
 		{
			// Få tak i størrelsen på bildet
 			// ($_FILES['image']['tmp_name'] er midlertidige navnet på filen som ble lastet opp på serveren)
 			$size=filesize($_FILES['image']['tmp_name']);

			// sammeligner størrelsen på bildet, og skriver ut error om den er for stor.
			if ($size > MAX_SIZE*1024)
			{
				echo '<h1>You have exceeded the size limit!</h1>';
				$errors = 1;
			} // END IF

			// Gir bildet et unikt navn, f.eks. klokken i unix tids format.
			$image_name = time().'.'.$extension;
			
			//newname vil innholdet hele lengden av navnet, og mappen som her er; images/
			$newname = "https://www.webforumet.no/forum/images/".$image_name;
			
			// sjekker at det er ingen errorer..
			if($errors == 0)
			{
				// verifiserer at bildet er blitt lastet opp, om ikke, skriver ut error
				$copied = copy($_FILES['image']['tmp_name'], $newname);
				if (!$copied) 
				{
					echo '<h1>Copy unsuccessfull!</h1>';
					$errors=1;
				} // END IF
			} // END IF
		} // END ELSE
	} // END IF
 } // END IF 

 // om det ikke er noen feil, skriv ut vellykket melding
 if(isset($_POST['Submit']) && !$errors) 
 {
 	echo "<h1>File Uploaded Successfully!</h1>";
 } // END IF 

 ?>

 <!-- Nå kommer formen, HUSK: du må ha enctype på "multipart/frm-data"!!!, og bruke input type="file" -->
 <form name="uploadimage" method="post" enctype="multipart/form-data"  action="">
 <table>
 	<tr><td><input type="file" name="image"></td></tr>
 	<tr><td><input name="Submit" type="submit" value="Upload image"></td></tr>
 </table>	
 </form>

Veldig enkel opplastning som sjekker filendelsene, og størrelsen på bildet ( Merk: ikke dimensjonene på bildet)
Husk også å ikke la dette være en offentlig fil, iogmed standar koden ikke har noen type for innloggings-sjekk eller verifikasjon av bruker.
 
Sist redigert:

vidarlo

Apache-junkie
Ikkje stol på kva klienten gir deg. Bruk getimagesize() i php til å finne mime-type. Den funksjonen returnerer et array med størrelse (HxW), bildetype, og litt anna snacks. Vanvittig mykje tryggare enn å stole på at eg ikkje laster opp t.d javascript som .jpg...
 

KSV

New Member
Ikkje stol på kva klienten gir deg. Bruk getimagesize() i php til å finne mime-type. Den funksjonen returnerer et array med størrelse (HxW), bildetype, og litt anna snacks. Vanvittig mykje tryggare enn å stole på at eg ikkje laster opp t.d javascript som .jpg...

Hadde du orket å postet en kjapp if() kode med bruk av getimagesize? Er ikke så kjapp i haudet se.. Lærer litt treigt.. hehe

if(getimagesize())
{
DET ER ET BILDE
}
else
{
DET ER IKKE ET BILDE
}

eller noe.. bare sånn kjapt så jeg forstår den :) ville vært meget takknemmelig
 
Sist redigert:
Topp