Avatar billede saybot Nybegynder
09. juli 2005 - 17:52 Der er 19 kommentarer og
2 løsninger

Bloker visse filtyper

Hejsa.

Sådan som det nu skulle kun gif jpeg png blive godkendt... men det virker ikke.
Selvom det er en eks. gif så bliver den ikke godkendt.


________________________________________
<?php

$max_size = 1000000;

if (isset($_FILES['file'])) {
// her er min kode some begrænser visse filtyper
$filetypes = array("image/gif", "image/jpeg", "image/pjpeg", "image/png");
if(!in_array($_FILES['file']['type'][$i], $filetypes)) {

// Folder for upload her.
$dist = "XXXX";
echo"

";
for($i = 0; $i < count($_FILES['file']['name']); $i++) {

// denne skulle så prøve at begrænse filens størrelse
if (isset($_FILES['file']['size'][$i]>$max_size)) {
        echo "for stort\n"; exit; }


if (isset($_FILES['file']['name'][$i]) && $_FILES['file']['name'][$i] !="") {

if(is_uploaded_file($_FILES['file']['tmp_name'][$i])) {

move_uploaded_file($_FILES['file']['tmp_name'][$i], $dist . $_FILES['file']['name'][$i]);
}
else{
    echo"Error";
    }

$type = $_FILES['file']['type'][$i];
$name = $_FILES['file']['name'][$i];
$size = $_FILES['file']['size'][$i];


echo " <p></p><b>Find your image here:</b><br>
        <a href=\"http://XXXX/$name\" target=\"_blank\">XXXX/$name</a><br><br>
        <b>HTML:</b><br>
        &lt;img src=&quot;XXXX/$name&quot;&gt;<br><br>
        <b>BBCode (for forums):</b> <br>
        http://XXXX\\$name <br><br>
          Name: $name<br>
          Type: $type<br>
          Size: $size bytes
          <br><br> <img src=\"http://XXXX/$name\" border=\"0\"><hr>
        ";
   
    }
    }
    echo"
   
    ";
}else{

}
?>
Avatar billede sukos Juniormester
09. juli 2005 - 18:03 #1
Du skal jo starte din forløkke førend du tjekker på typen.

Og forstår ikke lige,

if(!in_array.....................

så afvikles kode?
Avatar billede sukos Juniormester
09. juli 2005 - 18:07 #2
Og b.t.w.
det er fint at tjekke på typen, men tjek gerne også om du kan få getimagesize().
Avatar billede saybot Nybegynder
09. juli 2005 - 18:10 #3
okay... men hvad er der forkert? kode eks. måske?
Avatar billede nielle Nybegynder
09. juli 2005 - 18:10 #4
Bør:

if (!in_array($_FILES['file']['type'][$i], $filetypes))

- ikke simpelthen rettes til:

if (in_array($_FILES['file']['type'][$i], $filetypes))
Avatar billede sukos Juniormester
09. juli 2005 - 18:12 #5
$i er jo endnu ikke defineret! :O)
Avatar billede sukos Juniormester
09. juli 2005 - 18:17 #6
$filetypes = array("image/gif", "image/jpeg", "image/pjpeg", "image/png");

for($i = 0; $i < count($_FILES["file"]["name"]); $i++) {

    if(is_uploaded_file($_FILES["file"]["tmp_name"][$i]) && in_array($_FILES["file"]["type"][$i], $filetypes) {
    echo "<br />\r\n". $_FILES["file"]["name"][$i];
    }

}
Avatar billede nielle Nybegynder
09. juli 2005 - 18:17 #7
Nej, du har selvfølgelig ret i at der skal byttes om på rækkefølgen af if-sætningen og for-løkken, men det ser bestemt også ud til at den not-betingelse skal fjernes.
Avatar billede nielle Nybegynder
09. juli 2005 - 18:20 #8
Måske noget i denne stil:

if (isset($_FILES['file']))
{
    $filetypes = array("image/gif", "image/jpeg", "image/pjpeg", "image/png");
    $dist = "XXXX";  // Folder for upload her.

    for ($i = 0; $i < count($_FILES['file']['name']); $i++)
    {
        // her er min kode some begrænser visse filtyper
       
        if (in_array($_FILES['file']['type'][$i], $filetypes))
        {
            // denne skulle så prøve at begrænse filens størrelse
            if (isset($_FILES['file']['size'][$i] > $max_size))
            {
                echo "for stort\n";
                exit;
            }

            if (isset($_FILES['file']['name'][$i]) && $_FILES['file']['name'][$i] != "")
            {
                if (is_uploaded_file($_FILES['file']['tmp_name'][$i]))
                {
                    move_uploaded_file($_FILES['file']['tmp_name'][$i], $dist . $_FILES['file']['name'][$i]);
                }
                else
                {
                    echo "Error";
                }

                $type = $_FILES['file']['type'][$i];
                $name = $_FILES['file']['name'][$i];
                $size = $_FILES['file']['size'][$i];

                echo " <p></p><b>Find your image here:</b><br>
                    <a href=\"http://XXXX/$name\" target=\"_blank\">XXXX/$name</a><br><br>
                    <b>HTML:</b><br>
                    &lt;img src=&quot;XXXX/$name&quot;&gt;<br><br>
                    <b>BBCode (for forums):</b> <br>
                    http://XXXX\\$name <br><br>
                    Name: $name<br>
                    Type: $type<br>
                    Size: $size bytes
                    <br><br> <img src=\"http://XXXX/$name\" border=\"0\"><hr>
                ";
            }
        }
    }
}
else
{
    // Hvad skal der ske her?
}
?>
Avatar billede saybot Nybegynder
09. juli 2005 - 18:33 #9
det løser desværre ikke problemet :(... noget af det her hjalp "jaw" med igår... men det ser ud til han ikke er på
Avatar billede sukos Juniormester
09. juli 2005 - 18:39 #10
http://www.showsource.dk/php/vis_script.php?id=1118177424

et uploadscript til billeder.

Kan nemt rettes til flere på samme tid
Avatar billede saybot Nybegynder
09. juli 2005 - 19:12 #11
okay... men jeg kan nu sagtens uploade. Bare lige filtype delen jeg har problemer med.
Avatar billede sukos Juniormester
09. juli 2005 - 19:17 #12
Jahh, nu du bruger billeder, tænkte jeg det måske kunne bruges, og som sagt, der skal ikke ændres meget for at uploade flere på samme tid,

og også bruge $_FILES["file"]["type"] som ekstra tjek på billedetype.
Avatar billede nielle Nybegynder
09. juli 2005 - 19:22 #13
Spørgsmål: Uploader du en eller flere filer ad gangen?
Avatar billede saybot Nybegynder
09. juli 2005 - 19:28 #14
ja...
Avatar billede nielle Nybegynder
09. juli 2005 - 19:41 #15
"ja..." - til hvad?
Avatar billede saybot Nybegynder
09. juli 2005 - 19:43 #16
undskyld... mig der var lidt for hurtig :)

jeg mente... ja jeg uploader flere filer ad gangen
Avatar billede nielle Nybegynder
09. juli 2005 - 19:58 #17
Øv, jeg håbede lige på at vi kunne smide den for-løkke væk. Ville have simplificeret koden noget.

Nå, emn så er det vist på tide at indsætte nogle DEBUG-udskrifter sådan at vi kan følge med i hvad der sker i scriptet:

$max_size = 1000000;

if (isset($_FILES['file']))
{
    $filetypes = array("image/gif", "image/jpeg", "image/pjpeg", "image/png");
    $dist = "XXXX";  // Folder for upload her.

    for ($i = 0; $i < count($_FILES['file']['name']); $i++)
    {
        echo "DEBUG #1: " . $i . ", " . $_FILES['file']['name'][$i] . "<br>";
        echo "DEBUG #2: " . $_FILES['file']['type'][$i] . "<br>";

        // her er min kode some begrænser visse filtyper
       
        if (in_array($_FILES['file']['type'][$i], $filetypes))
        {
            echo "DEBUG #3: Vi kom indenfor i if-betingelsen<br>";

            // denne skulle så prøve at begrænse filens størrelse
            if (isset($_FILES['file']['size'][$i] > $max_size))
            {
                echo "for stort\n";
                exit;
            }

            if (isset($_FILES['file']['name'][$i]) && $_FILES['file']['name'][$i] != "")
            {
                if (is_uploaded_file($_FILES['file']['tmp_name'][$i]))
                {
                    move_uploaded_file($_FILES['file']['tmp_name'][$i], $dist . $_FILES['file']['name'][$i]);
                }
                else
                {
                    echo "Error";
                }

                $type = $_FILES['file']['type'][$i];
                $name = $_FILES['file']['name'][$i];
                $size = $_FILES['file']['size'][$i];

                echo " <p></p><b>Find your image here:</b><br>
                    <a href=\"http://XXXX/$name\" target=\"_blank\">XXXX/$name</a><br><br>
                    <b>HTML:</b><br>
                    &lt;img src=&quot;XXXX/$name&quot;&gt;<br><br>
                    <b>BBCode (for forums):</b> <br>
                    http://XXXX\\$name <br><br>
                    Name: $name<br>
                    Type: $type<br>
                    Size: $size bytes
                    <br><br> <img src=\"http://XXXX/$name\" border=\"0\"><hr>
                ";
            }
        }
    }
}
else
{
    // Hvad skal der ske her?
}
?>

Hvad skrives der ud på skærmen?
Avatar billede sukos Juniormester
09. juli 2005 - 20:09 #18
Det her gør det, omend der måske nok skulle lidt flere "fejlmeddelser" på


<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
V&aelig;lg en eller flere filer til upload:<br />
<input name="file[]" type="file"><br />
<input name="file[]" type="file"><br />
<input name="file[]" type="file"><br />
<input type="submit" value="Upload">


<?php
if (isset($_FILES["file"])) {

$fields = count($_FILES["file"]["name"]);

$filetypes = array("image/gif", "image/jpeg", "image/pjpeg", "image/png");
$max_size = 1000000;

// Folder for upload her.
$dist = "uploads/"; // Her som underdir til uploadscriptet

    for($i = 0; $i < $fields; $i++) {

        if(is_uploaded_file($_FILES["file"]["tmp_name"][$i]) && in_array($_FILES["file"]["type"][$i], $filetypes)) {

            if ($_FILES["file"]["size"][$i] < $max_size) {

                if(move_uploaded_file($_FILES["file"]["tmp_name"][$i], $dist . $_FILES["file"]["name"][$i])) {

                $type = $_FILES["file"]["type"][$i];
                $name = $_FILES["file"]["name"][$i];
                $size = $_FILES["file"]["size"][$i];

                echo " <p>&nbsp;</p><b>Find your image here:</b><br />\r\n";
                echo "<a href=\"http://XXXX/". $name ."\" target=\"_blank\">XXXX/". $name ."</a><br /><br />\r\n";
                echo "<b>HTML:</b><br />\r\n";
                echo htmlentities("<img src=\"". $dist . $name ."\">") ."<br /><br />\r\n";
                echo "<b>BBCode (for forums):</b> <br />\r\n";
                echo "http://XXXX\\". $dist . $name ."<br /><br />\r\n";
                echo "Name: ". $name ."<br />\r\n";
                echo "Type: ". $type ."<br />\r\n";
                echo "Size: ". $size ." bytes<br /><br />\r\n";
                echo "<img src=\"". $dist . $name ."\" border=\"0\"><hr />\r\n";
 
                }else{

                echo "<br />\r\nUps fejl!!! Kunne ikke flytte ". $_FILES["file"]["name"][$i];

                }

            }else{

            echo "<br />\r\nFor stort, ". $_FILES['file']['name'][$i] ."<br />\r\n";

            }
        }
    }
}
?>
Avatar billede saybot Nybegynder
09. juli 2005 - 22:58 #19
jeg har nu siddet og rodet en del med det selv... og har fået det til at virke. Men læg lige et svar begge... da i har kommet med gode svar. Jeg håber i kan nøjes med at dele point?
Avatar billede nielle Nybegynder
09. juli 2005 - 23:00 #20
Svar :^)

... men må vi ikke også se den færdige kode?
Avatar billede sukos Juniormester
10. juli 2005 - 09:31 #21
Og et svar herfra...

og b.t.w. min IE ser png filer som "image/x-png"
:O)
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