Fil upload - Check af fil typer + echo af tilladte filtyper
Jeg er gået i gang med at lave et php scipt som skal kunne uploade en fil til en server, checke størrelse og filtype, og der efter sende en e-mail om at der er uploaded en fil. Men da det her er mit første forsøg på at lave noget seriøst i php, er jeg løbet ind i lidt problemer.Jeg har testet de enkelt funktioner hver for sig, og de fleste af dem virker som de skal... den kan uploade, checke størrelse og sende mailen fint, men den stump kode der cheker for filtype er der noget galt med, den afviser alt. jeg tror måske problemet ligger i den variabel ( $ext ), der skal finde brugerens filtype, for hvis jeg echo'er den, kommer den op blank?
Det andet problem jeg har, er at når den failer en upload pga. fil typen, vil jeg have den til at echo hvad for en fil brugeren forsøgte med, og dernest hvilke fil typer der er tilladt. Til det har jeg lavet en function der skal echo fra et array, med en for løkke... løkken virker som den skal alene, men ikke når jeg bruger den inden i en function.
Håber der er nogen der kan hjelpe! =D
$target_path = "data/"; //den mappe du vil gemme i
$allowed_extensions = array('.jpg','.pdf','.zip','.ai','.rar','.gif','.png','.eps'); //tilladte fil typer
$max_filesize = 5; //den maximale filstørelse (i megabytes)
$recipient = "name@url.com"; //den email du vil modtage på når der bliver uploaded
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);
$sizeval = filesize($_FILES['uploadedfile']['tmp_name']) / 1048576;
$sizepost = round($sizeval, 2);
$email = $_REQUEST['Email'] ;
$subject = $_REQUEST['navn'] . " has uploaded" . $_FILES['uploadedfile']['name'] . $ext . " to the server.";
$body .= "navn: " . $_REQUEST['navn'] . " \n";
$body .= "firmanavn: " . $_REQUEST['firmanavn'] . " \n";
$body .= "email: " . $_REQUEST['email'] . " \n";
$body .= "upload: " . $_FILES['uploadedfile']['name'] . $ext . " \n";
function post_extensions() {
for ($i=0; $i<count($allowed_extensions); $i++) {
if ($i=0) {
echo " " . $allowed_extensions[$i];
} else {
echo ", " . $allowed_extensions[$i];
}
}
}
if(in_array($ext, $allowed_extensions)) {
if($sizeval < $max_filesize) {
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
mail( $recipient, $subject, $body, "From: $email" );
} else{
echo "There was an error uploading the file, please try again!";
}
} else{
echo "Din fil fylder " . $sizepost . "mb, hvilket er for meget /n";
echo "Den maximale størrelse der er tilladt er " . $max_filesize . " megabytes.";
}
} else{
echo "Den fil du forsøger at uploade er en " . $ext . "fil hvilke ikke er tilladt. /n";
echo "Det er kun tilladt at uploade " . post_extensions() . "filer.";
}