Avatar billede danic Nybegynder
02. oktober 2003 - 21:47 Der er 7 kommentarer og
1 løsning

Hjælp til debug af upload script

Jeg har et problem med mit upload script her, min debug skriver kun 12 den får alstå ikke 3 med så den uploader ikke filen.

Scriptet kommer som kommentar så reklamen =>
ikke ødelægger formateringen.
Avatar billede danic Nybegynder
02. oktober 2003 - 21:47 #1
// Tjekker om fil er valgt
    if (isset($_FILES['picfile']))
    {
    echo"1";
        // Tjekker om brugernavnet er optaget
        $picfilename = $_FILES['picfile']['name'];
        $resultfile = mysql_query("select * from users where pic = '$picfilename'");
        $number = mysql_num_rows($resultfile);
        if($number != "1")
        {
        echo"2";
            $allowedTypes = array("image/jpeg", "image/gif", "image/jpg");
            if (in_array($_FILES['picfile']['type'],$allowedTypes))
            {
            echo"3";
            $sti = $_SERVER['DOCUMENT_ROOT'] ."/userpic/";
            move_uploaded_file($_FILES['picfile']['tmp_name'], $sti . $_FILES['picfile']['name']);
            }
            // Skriver filen i db       
            mysql_query("UPDATE users SET pic='$picfilename' WHERE userid='$userid'") or die(mysql_error());
        }
        elseif($number == "1")
        {
        echo"4";
        error("Filnavnet på det billede du forsøger at uploader er allerede taget af en anden, omdøb venligst dit billede og prøv igen!");
        }
    }
}
Avatar billede fangel Nybegynder
02. oktober 2003 - 21:49 #2
prøv lige

if (in_array($_FILES['picfile']['type'],$allowedTypes))
{
  echo"3";
  $sti = $_SERVER['DOCUMENT_ROOT'] ."/userpic/";
  move_uploaded_file($_FILES['picfile']['tmp_name'], $sti . $_FILES['picfile']['name']);
}
else
{
  echo $_FILES['picfile']['type'];
}

bare for at se hvad ['type'] indeholder - mener nemli den er valgfri at sende med!

Morten
Avatar billede danic Nybegynder
02. oktober 2003 - 21:53 #3
1
Warning: in_array(): Wrong datatype for second argument in /home/dvdbasendk/retprofil.php on line 159
image/pjpeg
Avatar billede fangel Nybegynder
02. oktober 2003 - 21:57 #4
du kan nu konkludere at din image er 'image/pjpeg' - og derfor fejler det!

og du mangler 'image/png' til din liste!

Morten
Avatar billede danic Nybegynder
02. oktober 2003 - 22:04 #5
smart! Nu er jeg godt kørerne ->
$allowedTypes = array "image/jpeg", "image/gif", "image/jpg", "image/png", "image/pjpeg", "image/bmp", "image/x-png", "image/psd");

Det kunne være smart med en fejlmeddelse, hvordan indsætter jeg sådan en?
Avatar billede fangel Nybegynder
02. oktober 2003 - 22:07 #6
// Tjekker om fil er valgt
    if (isset($_FILES['picfile']))
    {
    echo"1";
        // Tjekker om brugernavnet er optaget
        $picfilename = $_FILES['picfile']['name'];
        $resultfile = mysql_query("select * from users where pic = '$picfilename'");
        $number = mysql_num_rows($resultfile);
        if($number != "1")
        {
        echo"2";
            $allowedTypes = array "image/jpeg", "image/gif", "image/jpg", "image/png", "image/pjpeg", "image/bmp", "image/x-png", "image/psd");
            if (in_array($_FILES['picfile']['type'],$allowedTypes))
            {
                echo"3";
                $sti = $_SERVER['DOCUMENT_ROOT'] ."/userpic/";
                move_uploaded_file($_FILES['picfile']['tmp_name'], $sti . $_FILES['picfile']['name']);
            }
            else
            {
                echo 'Nær dig - kun billed-filer af ordenlig kvali-vare!';
            }

            // Skriver filen i db     
            mysql_query("UPDATE users SET pic='$picfilename' WHERE userid='$userid'") or die(mysql_error());
        }
        elseif($number == "1")
        {
        echo"4";
        error("Filnavnet på det billede du forsøger at uploader er allerede taget af en anden, omdøb venligst dit billede og prøv igen!");
        }
    }
}

---

du får også lige svar med på vejen!

Morten
Avatar billede sukos Juniormester
02. oktober 2003 - 22:09 #7
En anden måde at tjekke for filnavn, og netop undgå det med at browseren tolker type på, og som jeg selv er lidt "tilhænger" af:

$allowedTypes = array("jpg", "jpeg", "gif", "png", "bmp", "psd");

$filtype= pathinfo($_FILES["picfile"]["name"]);

if(in_array(@strtolower($filtype["extension"]), $allowedTypes)) {
move_..............
}
Avatar billede danic Nybegynder
02. oktober 2003 - 22:12 #8
Super!
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