Avatar billede jokerper Nybegynder
06. juni 2007 - 10:57 Der er 13 kommentarer og
1 løsning

Hej Eksperter - Hjælp til filtype ændring

Hej Eksperter

Jeg har brug for jeres hjælp

Jeg har noget kode som mangler en filtype ændring.


$only_images = true;
$filtyper = array(1 => "gif", 2 => "jpg", 3 => "png");


Hvis jeg sætter denne kode "$only_images = true;"
til = false; så kan alle filer uploades. Ikke godt.
Avatar billede jakobdo Ekspert
06. juni 2007 - 12:37 #1
Jeg tror du skal vise noget mere kode.
Avatar billede erikjacobsen Ekspert
06. juni 2007 - 12:46 #2
Vil du have flere filtype kan du sikkert nøjes med:

$only_images = true;
$filtyper = array(1 => "gif", 2 => "jpg", 3 => "png", 4=>"odf");
Avatar billede jokerper Nybegynder
06. juni 2007 - 13:59 #3
Jeg har prøvet at udvide, men som kommer der en fejl. "ikke en billedefil"

Her kommer lidt mere kode.


            if($only_images == true)
            {
                if(false == ($str = getimagesize($tempnavn)))
                {
                $_SESSION["errors"]["no_img"][] = $filnavn;
                continue;
                }

            $typen = $str[2];

                if(!isset($filtyper[$typen]))
                {
                $_SESSION["errors"]["type"][] = $filnavn;
                continue;
                }

Håber det er relevant nok.
Avatar billede jakobdo Ekspert
06. juni 2007 - 14:35 #4
Du kan jo som erik er indepå, udvide arrayet med filer.
Og så samtidig sætte $only_images = true
Avatar billede jakobdo Ekspert
06. juni 2007 - 14:36 #5
Ellers skal du udbygge scriptet så du har:

$ok_fil_typer = array('txt','doc','xls'); //osv...
$billede_typer = array('jpg','png','gif','bmp'); //osv...

og så lave noget som evt. kun acceptere dem fra billeder eller begge?
Sådan kan du sikre det ikke er alle typer som tillades, selvom du ikke kun vil tillade billeder.
Avatar billede erikjacobsen Ekspert
06. juni 2007 - 14:57 #6
Det er jo hullet som en si ;(  Sådan skal man IKKE gøre, under nogen omstændigheder. Hvor du nu har gravet det op henne, så lade være med at hente noget derfra en anden gang.
Man kommer ikke udenom at tjekke extension på filen. Læs her, god artikel: http://www.eksperten.dk/artikler/1098
Avatar billede jokerper Nybegynder
06. juni 2007 - 15:00 #7
Nu har jeg prøvet lidt af hvert.


Her kommer koden for upload:

// UPLOAD AF FILER ////////////////////////////////////////

if(isset($_FILES["upfile"]) && is_array($_FILES["upfile"]))
{
    foreach($_FILES["upfile"]["error"] as $key => $error)
    {
        if($error == UPLOAD_ERR_OK)
        {

        $tempnavn = $_FILES["upfile"]["tmp_name"][$key];
        $filnavn = $_FILES["upfile"]["name"][$key];
        $filnavn = up_file_name($filnavn);

            if($max_kb > 0 && filesize($tempnavn) > ($max_kb*1024))
            {
            $_SESSION["errors"]["toobig"][] = $filnavn;
            continue;
            }
 
            if($only_images == true)
            {
                if(false == ($str = getimagesize($tempnavn)))
                {
                $_SESSION["errors"]["no_img"][] = $filnavn;
                continue;
                }

            $typen = $str[2];

                if(!isset($filtyper[$typen]))
                {
                $_SESSION["errors"]["type"][] = $filnavn;
                continue;
                }

            $filnavn = basename($filnavn, $filtyper[$typen]);

                if(substr($filnavn, -1) != ".")
                {
                $filnavn = $filnavn .".";
                }

            $filnavn =  $filnavn . $filtyper[$typen];

            }

            move_uploaded_file($tempnavn, $dist . $filnavn);
            chmod($dist . $filnavn, 0644);
            $_SESSION["files"][] = $filnavn;

        }
        else
        {
            if($error == 4)
            {
            continue;
            }

        $_SESSION["errors"]["upload"][] = $error;
        $_SESSION["filnavn"][] = $_FILES["upfile"]["name"][$key];
        }
    }

header("Location:http://". $_SERVER["HTTP_HOST"] . $file_name);
exit;
}

// END UPLOAD AF FILER ////////////////////////////////////


Jeg kan ikke lige gennemskue hvor det er?
Avatar billede erikjacobsen Ekspert
06. juni 2007 - 15:08 #8
Det er ikke personligt, men jeg gider ikke gå gammel og dårlig kode igennem for at rette fejl. Min anbefaling er at starte forfra, med et fornuftigt script.
Avatar billede jokerper Nybegynder
06. juni 2007 - 15:10 #9
okay, nogen forslag?
Avatar billede jakobdo Ekspert
06. juni 2007 - 15:14 #10
Erik: Tak, det er min artikel! :o)
Avatar billede jokerper Nybegynder
06. juni 2007 - 17:16 #11
jakobdo> jeg har adgang til den artikel, den er meget beskrivende. Men jeg må indrømme at jeg ikke fik sat noget sammen ud fra den. Jeg manglede det samlede overblik. Hvor mange filer drejer det sig om mv.

Så den er nok velment godt til nogle som kan temmelig meget php i forvejen.
Avatar billede jakobdo Ekspert
06. juni 2007 - 17:21 #12
Hvis du blot tager koden fra: DEN FULDE KODE, så burde det virke out-of-the-box.
Avatar billede jokerper Nybegynder
11. juni 2007 - 17:52 #13
Lukker: jeg synes ikke jeg fik hjælpen her, men tak for interessen.


erikjacobsen
jakobdo
Avatar billede jokerper Nybegynder
11. juni 2007 - 17:52 #14
Lukket:(
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