28. april 2003 - 14:15
Der er
5 kommentarer og
2 løsninger
Kun jpg og gif ved uploade
Hvordan kan jeg i et upload-script sørge for at kun følgende "typer" accepteres:
gif, jpg, jpeg og jpe?
På forhånd tak
Hono
28. april 2003 - 14:18
#1
$tilladte = array("image/jpg","image/gif","image/jpeg");
if(!in_array($_FILES['fil']['type'], $tilladte)) {
echo "Fyyh";
} else {
// Make it happen
}
Slettet bruger
28. april 2003 - 14:19
#2
en lidt sjov måde meeeen :)
<?
$filtype = strtolower(substr($fil,strrpos($fil,".")));
if ($filtype==".jpg" || $filtype==".gif" || $filtype==".jpeg"){
print"fino :)";
}else{
print"Ikke fino :(";
}
?>
28. april 2003 - 14:24
#4
HTML har en attribut accept="<mimetype>,<mimetype>,..." til <input type='file' felter.
<input type='file' accept="image/jpeg,image/gif" name='whatever'>
Desværre har jeg aldrig fået den til at virke :(
se
http://www.w3schools.com/tags/tag_input.asp under 'optional attributes'. Måske du får det til at virke.
mvh JakobA
28. april 2003 - 14:26
#5
Måske du lige skal tilføje to mere:
$tilladte = array("image/jpg","image/jpeg","image/pjpeg","image/pjpg","image/gif");
28. april 2003 - 15:25
#6
Hmm, kan ikke få det til at virke :(. Den siger uanset hvad, at filtypen ikke understørres. Her er koden jeg bruger (der er sikkert også mange andre fejl i den):
<?
require("header.php");
$status = "";
session_start();
if(session_is_registered("bruger")){
$status = "bruger";
}elseif(session_is_registered("admin")){
$status = "admin";
}
if(($status=="bruger")||($status=="admin")){
if( isset($billede) ){
//TJEKKER FILTYPE
$tilladte = array("image/jpg","image/jpeg","image/pjpeg","image/pjpg","image/gif");
if(!in_array($_FILES['billede']['type'], $tilladte)) {
$msg = "FEJL: Kun gif og jpg filer understøttes $hojde $bredde $typen $billede hej!";
} else { //HVIS FILTYPEN ER OKAY
$msg = "Filen $billede_name er uploadet";
$Str=filesize($billede);
$Str=round($Str / 1024 * 100) / 100; //størrelse i KB
//HVIS DER IKKE ER VALGT NOGEN MAPPE (ER SKET EN FEJL) VÆLGES BLOT HOVEDMAPPEN
if(!$mappe){
$mappe = 1;
}
//FINDER FILTYPE, HØJDE OG BREDDE SÅ DE KAN PUTTES I DATABASEN
$dimensioner = getimagesize($billede);
$bredde = $dimensioner[0];
$hojde = $dimensioner[1];
$typen = $dimensioner[2];
//FINDER UD AF OM MAN ER ADMIN ELLER BRUGER, OG GEMMER ENS NAVN I EN VARIBLE, SOM PROPPES I DATABASEN
if($admin){
$tilfojer = $admin;
}elseif($bruger){
$tilfojer = $bruger;
}
//TIDEN FINDES
$tidspunkt = time();
//CONNECTES TIL DATABASEN
$forbindelse = mysql_connect($my_host,$my_root,$my_pass) or die(mysql_error());
mysql_select_db($my_daba, $forbindelse) or die(mysql_error());
mysql_query("INSERT INTO pics (filtype, filnavn, mappe, beskrivelse, bredde, hojde, bruger, tidspunkt, Str)VALUES ('$typen', '$billede_name', '$mappe', '$beskrivelse', '$bredde', '$hojde', '$tilfojer', '$tidspunkt', '$Str')");
//BILLEDE OMDØBES EFTER DEN UNIKKE ID, SÅ IKKE KOMMER DUBLETTER. DET GEMMES NU I MAPPEN "BILLEDER_OFF"
$fileID = mysql_insert_id() ;
$nynavn = $fileID.".".$typen;
move_uploaded_file ($billede, "billeder_off/$nynavn") or die(mysql_error());
mysql_close($conn); //disconnect
}//SLUT PÅ HVIS FILTYPEN ER OKAY
}else{ //HVIS IKKE BILLEDE $BILLEDET ER SAT
$msg = "FEJL: Intet billede valgt!";
}//SLUT PÅ "ELSE - HVIS $BILLEDE IKKE ER SAT"
}//SLUT PÅ "HVIS SESSION ER REGISTRERET"
header("location: tilfoj.php?msg=$msg&h=$hojde&b=$bredde&t=$typen");
?>