Avatar billede proviben Novice
28. juli 2004 - 14:31 Der er 18 kommentarer og
3 løsninger

upload-script, billeder på maksimalt 100Kb

Hvorledes kan følgende upload-script ændres, således at det kun vil acceptere billeder på maksimalt 100Kb ?
Henrik/

<?

$pass = sprintf( "%04d", rand( 0, 999999 ) );

if (isset($_POST['Submit'])) {
//stien, hvortil filerne skal placeres
$dist = "./temp/";
//Filer som kan uploades
$filetyper = array("image/gif", "image/jpeg", "image/jpeg", "image/png");
$size = getimagesize($_FILES['upfile']['tmp_name'][0]);

if($size[0] > 450) {
echo"Billedet er for stort, prøv igen...<br>";
$ok = "nej";
}
if($ok != "nej") {
for($i = 0; $i <= 2; $i++) {
if (isset($_FILES['upfile']['name'][$i]) && $_FILES['upfile']['name'][$i] !="") {
//se http://dk.php.net/manual/en/function.is-uploaded-file.php for "is_uploaded_file"
if(is_uploaded_file($_FILES['upfile']['tmp_name'][$i])) {
//Flyt filer fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
$navn = $pass + 1;
move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $dist . $navn . ".gif");
echo"Din billed ";

echo $pass;

echo" er nu uploadet...<br>";


echo"<img src='$dist$navn.gif' border=0 width=110 height=82></a><br>";

}
}
}
}
}
?>

<style type="text/css">
<!--
.style1 {font-family: Verdana, Arial, Helvetica, sans-serif}
-->
</style>

<span class="style1">Upload billeder <br>
</span>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" name="form1" class="style1" enctype='multipart/form-data'>
<br>
Vælg billedfil:
<input type="file" name="upfile[]">
<br><br>
<input type="submit" name="Submit" value="Indl&aelig;s">
</form>
Avatar billede avminarm Juniormester
28. juli 2004 - 14:34 #1
jeg vil tro at if($size[0] > 450) { - skal ændres til if($size[0] > 100) {
Avatar billede sone Nybegynder
28. juli 2004 - 14:50 #2
der regnes i bytes, så: 100*1024
Avatar billede taskmgr Nybegynder
28. juli 2004 - 14:56 #3
getimagesize() finder ikke billedets størrelse i bytes :)
Avatar billede sone Nybegynder
28. juli 2004 - 14:59 #4
Sorry, getimagesize() bruges til at finde billedets dimentioner.
if ( $_FILES['upfile']['size'][0])> 100*1024 ) {
// fejl
}
Avatar billede taskmgr Nybegynder
28. juli 2004 - 14:59 #5
Den finder billedets størrelse (px) i bredden, højden, samt billedets type.

Du skal bruge $_FILES['upfile']['size'], som indeholder billedets størrelse i bytes.
Avatar billede avminarm Juniormester
28. juli 2004 - 15:08 #6
sone+taskmgr>> der var jeg vist lidt for hurtig ;o)
Avatar billede taskmgr Nybegynder
28. juli 2004 - 15:10 #7
avminarm: Det ka' jo ske for selv de bedste ;)
Avatar billede proviben Novice
28. juli 2004 - 15:17 #8
Scriptet ja, tager højde for dimensionen samt mime-typerne (filendelsen), dette er helt fint. Ønsker blot at få tilføjet et check på Kb-størrelsen. Hvis muligt så post hele scriptet inkl. tilføjelsen.
Avatar billede taskmgr Nybegynder
28. juli 2004 - 15:20 #9
Prøv dette:

<?

$pass = sprintf( "%04d", rand( 0, 999999 ) );

if (isset($_POST['Submit'])) {
//stien, hvortil filerne skal placeres
$dist = "./temp/";
//Filer som kan uploades
$filetyper = array("image/gif", "image/jpeg", "image/jpeg", "image/png");
$size = getimagesize($_FILES['upfile']['tmp_name'][0]);
$bytesize = $_FILES['upfile']['size'][0];

if($size[0] > 450) {
echo"Billedet er for stort, prøv igen...<br>";
$ok = "nej";
}elseif($bytesize > 100*1024){
echo "Billedet fylder mere end 100 kb, det går ikke.<br>";
$ok = "nej";
}
if($ok != "nej") {
for($i = 0; $i <= 2; $i++) {
if (isset($_FILES['upfile']['name'][$i]) && $_FILES['upfile']['name'][$i] !="") {
//se http://dk.php.net/manual/en/function.is-uploaded-file.php for "is_uploaded_file"
if(is_uploaded_file($_FILES['upfile']['tmp_name'][$i])) {
//Flyt filer fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
$navn = $pass + 1;
move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $dist . $navn . ".gif");
echo"Din billed ";

echo $pass;

echo" er nu uploadet...<br>";


echo"<img src='$dist$navn.gif' border=0 width=110 height=82></a><br>";

}
}
}
}
}
?>

<style type="text/css">
<!--
.style1 {font-family: Verdana, Arial, Helvetica, sans-serif}
-->
</style>

<span class="style1">Upload billeder <br>
</span>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" name="form1" class="style1" enctype='multipart/form-data'>
<br>
Vælg billedfil:
<input type="file" name="upfile[]">
<br><br>
<input type="submit" name="Submit" value="Indl&aelig;s">
</form>
Avatar billede proviben Novice
28. juli 2004 - 15:51 #10
En uheldig detalje er dog at scriptet tillader upload af fx php-filer, dog udelukkende omdøbt til gif. De 100 point er dine taskmgr og på vej.
Avatar billede sone Nybegynder
28. juli 2004 - 15:53 #11
[sone lidt fornærmet]: Min løsning kl. 28/07-2004 14:59:47 dur ikke, eller...?
Avatar billede taskmgr Nybegynder
28. juli 2004 - 15:57 #12
Så kan du bare udvide dit tjek lidt (er ikke testet):

if($size[0] > 450) {
echo"Billedet er for stort, prøv igen...<br>";
$ok = "nej";
}elseif($bytesize > 100*1024){
echo "Billedet fylder mere end 100 kb, det går ikke.<br>";
$ok = "nej";
}elseif(!in_array($_FILES['upfile']['type'][0],$filetyper)){
echo "Filtypen er ikke tilladt.<br>";
$ok = "nej";
}
Avatar billede proviben Novice
28. juli 2004 - 16:03 #13
Blev afledt af dit ”Sorry”, sone - hvad gør vi nu taskmgr?
Avatar billede taskmgr Nybegynder
28. juli 2004 - 16:07 #14
Du kan jo fordele dem som du syn's :) sone fortjener naturligvis også point og jeg tager dem alligevel ikke så højttydeligt.
Avatar billede proviben Novice
28. juli 2004 - 16:09 #15
sone 50/50?
Avatar billede proviben Novice
28. juli 2004 - 16:29 #16
Checket spærrer fint for uønskede filtyper, lukker gif igennem, men desværre ikke jpg. Afventer lige et svar fra sone, før jeg smider pointene.
Avatar billede taskmgr Nybegynder
28. juli 2004 - 16:32 #17
Prøv at ændre til:
$filetyper = array("image/gif", "image/jpg", "image/jpeg", "image/png");
Avatar billede coderdk Praktikant
28. juli 2004 - 16:43 #18
Du er nødt til at checke på filens extension, det er ikke nok med image/* - du kan smide et phpscript i røven af en gif, og det vil blive kørt hvis filen hedder billede.php (som har en image/gif mime-type).
Avatar billede coderdk Praktikant
28. juli 2004 - 16:44 #19
Eller selv sætte en extension alt efter hvad mime-typen er.
Avatar billede proviben Novice
28. juli 2004 - 16:47 #20
Har ændret, men får stadig: ”Filtypen er ikke tilladt”
Avatar billede proviben Novice
28. juli 2004 - 17:35 #21
Hermed 50 point til både sone og taskmgr, takker for indsatsen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester